.数据传输加密加密方式总结

一般来说,HTTP数据交互过程中,数据都是以密文形式传输的,数据加密也就成了目前web中比较常见的部分

对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
这种加密算法也是比较常见的,好处就是密钥在并不进行数据传输,一旦黑客获取到你的密钥,那么你的数据就会泄露,甚至说数据传输过程中会被篡改
例子:
微信支付的签名算法
原始数据:
appid:wxd930ea5d5a258f4f
mch_id:10000100
device_info:1000
body:test
nonce_str:ibuaiVcKdpRxkhJA
其中的sign就是加密后的签名
而加密算法就是:
1、对参数按照key=value的格式,并按照参数名ASCII字典序排序如下
stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";
此处就是把需要传输的数据进行连接处理,也就是最基础的混淆
2、第二步:拼接API密钥:
stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d" //注:key为商户平台设置的密钥key sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7" //注:MD5签名方式
也就是将对称的密钥key以同样方式添加到需要传输的数据后面,然后对数据进行MD5或者SHA256等不可逆加密算法进行处理加密,此时得到的结果就是签名数据。
3、最后要做的就是把签名添加到需要发送的数据后面
<xml> <appid>wxd930ea5d5a258f4f</appid> <mch_id>10000100</mch_id> <device_info>1000</device_info> <body>test</body> <nonce_str>ibuaiVcKdpRxkhJA</nonce_str> <sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign> </xml>
此时接收方在获取到数据之后,通过相同的步骤对除前名以外的数据进行计算获取签名,然后对比双方的签名,签名相同则数据有效,签名不同说明数据被篡改过,直接返回失败。
这种方式的好处在于算法简单有效,坏处就是一旦密钥泄露,攻击者就可以在网关或者路由端拦截修改数据,进行数据破坏。
当然微信支付这种只是通过对称加密方式生成密钥,还可以通过标准算法对传输的数据进行完整的加密,这种理解起来比较简单,就不进行多说了。
当然这微信支付只是把对称加密用于签名验证上,数据传输之间还是明文传输

非对称加密

非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
发送者通过私钥对数据进行加密,然后接收者通过公钥进行解密,当然,私钥个公钥之间是有一定算法规范的。当然这种加密方式还是比较简单的那种,双方我用私钥进行加密,然后你用公钥就可以解密,双方不对称的密钥,这就是比较完善的数据传输方式,但是因为中间设计到私钥公钥转换的过程,所以大数据量的时候转换会比较慢,所以一般数据没必要通过这种方式进行加解密。

混合加密

混合加密的方式就是保密性非常高的那种了,因为前面两种对称或者非对称都是基于密钥的情况下进行处理的,一旦固定的密钥被泄露,那么数据就会被破解(当然这种情况概率非常小),混合加密就是充分的运用两种不同的加密方式进行混合使用。
举例:假设A和B进行数据传输:
A发送数据给B
1、 A生成一个随机数,假设是123456,先将这个随机数进行非对称加密发送给B;
2、 B得到到A的密文之后,通过公钥解密获取到明文,然后自己生成一个随机数假设是ABCDEF,然后将这个随机数通过非对称加密发送给A;
3、 A得到B的密文,解密得到ABCDEF,然后跟之前的123456进行随机算法排序,假设是123456ABCDEF,这样就得到了一个合成密钥,我们通过这个密钥对要发送的数据进行对称加密,发送给B;
4、 B通过相同的排序算法,得到对称加密的密钥,然后对A传过来的数据进行解密,得到明文。
这种方法的好处显而易见,真正数据进行传输的密钥每次都在改变,实际双方都确认的是数据排序算法,当然这个算法也是可以进行进一步的优化的,在这里就不做过多深入的了解了;从效率上讲,这个算法其实是比较尴尬的,虽然对称加密这部分效率明显比非对称加密效率高,但是由于中间多了一次HTTP请求,所以,总的来看,效率反而降低了。这种加密方式还是适合于那些对于数据保密性非常严格的情况下使用的,一般来说不太建议使用,因为多一次HTTP请求所耗费的资源确实有点大。

原文地址:https://www.cnblogs.com/whymoney1000/p/11221897.html

时间: 2024-11-03 20:13:09

.数据传输加密加密方式总结的相关文章

关于数据传输中加密解密那点事儿(一)

随着互联网的兴起,越来越多的信息和资源要通过网络传输完成:然而在这些数据传输中总有一些"无关人员"做一些窃听.盗取.篡改等危害数据安全的行为,所以我们要对数据进行加密处理,以保证数据的安全传输: 所以有了一下几种加密方式: 一.对称加密: 这种算法简单来说就是 数据的发送方和接收方都必须要有同一种密钥(加密数据所用到的密钥),在数据的传输中 数据与密钥都通过加密的方式传送: 特性:在数据加密中,数据被分成固定大的块,逐个加密:加密和解密速度也快: 缺陷:因为加密和解密使用同一种密钥,所

银行应用系统安全性设计(1):数据传输的加密方法

银行应用系统安全性设计(1):数据传输的加密方法 数据传输的加密方法 1.报文鉴别代码: 在数据传输中,为防止线路窃听和非法进入修改,引入了传输密钥和报文鉴别(MAC),以确认信息包的合法性.数据在线路上的加密是以传输密钥为基础的,前置机每天开机,自动向主机申请传输密钥,将其中一个下传到前置机,另一个存放在主机.以后数据的传输均通过这一对密钥加密.因为传输密钥的申请是随时可以重复的,也就是说传输密钥是动态的,而且每一前置机与主机之间的密钥对应是不同的,所以确保了数据在传输中的安全性和保密性.2.

linux网络数据传输的加密,解密以及基于openssl的私有CA的建立

网络数据传输的安全性是计算机通信领域的重要课题,数据加密就是保证数据安全性的主要方法.所谓数据加密,即是通过某种算法和秘钥对数据明文进行处理,从而得到密文的过程.计算机网络通信过程中的加密形式主要有以下几种: 1,对称加密,用同一个密钥对信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密.对称加密算法的优点是算法公开.计算量小.加密速度快.加密效率高,但秘钥有时会很多,难以管理.而且秘钥交换又是一个难以解决的问题. 常见算法: DES:Data Encryption Standard,

mysql加密解密方式用法

如果你使用的正是mysql数据库,那么你把密码或者其他敏感重要信息保存在应用程序里的机会就很大.保护这些数据免受黑客或者窥探者的获取是一个令人关注的重要问题,因为你既不能让未经授权的人员使用或者破坏应用程序,同时还要保证您的竞争优势.幸运的是,MySQL带有很多设计用来提供这种类型安全的加密函数.本文概述了其中的一些函数,并说明了如何使用它们,以及它们能够提供的不同级别的安全. 就让我们从最简单的加密开始:双向加密. 在这里,一段数据通过一个密钥被加密,只能够由知道这个密钥的人来解密.MySQL

关于数据传输中加密解密那点事儿(二)

基于上一篇,知道了数据加密中所用到的加密方式及算法,还有某些认证机构:              那么这一篇就用来实际操作,如何使用命令来完成数据的加密及解密: 首先,在操作之前,要了解到两个关于安全传输的协议即:SSL与TLS SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层.SSL通过互相认证.使用数字签名确保完整性.使用加密确保私密性,以实现客户端和服务器之间的安全通讯.该协议由两层组成: TLS:(Transpo

Java数据的简单加密 DES方式

1.数据在网络中传输时,需要进行加密处理 双方约定一个相同的key(key不在网络中进行传输,只传输加密数据),然后根据将key根据一定的DES规则转换,得到真正的key,在进行加密和解密,为了增加安全性,加密过程中再加上编码base64转换,解密时先解码base64 加密和解密的完整的代码: package com.cmit.hall.plat.play.utils; import java.security.GeneralSecurityException; import java.secu

Android开发——自动连接指定SSID的wifi热点(不加密/加密)

http://blog.csdn.net/yuanbohx/article/details/8109042 最近在做一个项目,其中涉及到一块“自动连接已存在的wifi热点”的功能,在网上查阅了大量资料,五花八门,但其中一些说的很简单,即不能实现傻瓜式的拿来就用,有些说的很详细,但其中不乏些许错误造成功能无法实现,经过浣熊多方努力,终于成功将功能实现,遂将一点点小成就拿出来与大家分享. 首先需要感谢这篇文章的作者:http://blog.chinaunix.net/uid-22342564-id-

《Apache数据传输加密、证书的制作》——涉及HTTPS协议

首先了解http和https: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议. HTTPS和HTTP的区别: http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议 http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议 要比http协议安全 HTTPS解决的问题: 1 . 信任主机的问题.

iOS代码加密常用加密方式

在今天的面试中,被问到了iOS是采用什么进行加密解密操作的,我的回答是这样的:AES,MD5,Base 64,然后是对这几种加密算法进行了一下简单的介绍和概述和几种算法之间的不同点和优缺点.然而,收到的回答是:这些都不是iOS的加密!我顿时就无语了,这不就是iOS加密所用到的方法么?然后向面试官请教了一下:MD5是一种摘要....什么叫加密呢?加密是客户端对数据加密和服务器端采用秘钥对数据进行解密处理,为了数据的安全考虑.要说加密应该是RSA.幸亏之前有了解过RSA,只是了解的不是很彻底和清楚.