对称加密:算法
A与 B 之间之间的通信数据都用同一套的密钥来进行加密解密。安全
非对称加密:加密
用公钥和私钥来加解密的算法。打个比方,A 的公钥加密过的东西只能经过 A 的私钥来解密;同理,A 的私钥加密过的东西只能经过 A 的公钥来解密。顾名思义,公钥是公开的,别人能够获取的到;私钥是私有的,只能本身拥有。code
可是非对称加密也是存在漏洞,由于公钥是公开的,若是有 C 冒充 B 的身份利用 A 的公钥给 A 发消息,这样就乱套了,因此接下来就采用非对称加密+摘要算法+数字签名的机制来确保传输安全。支付宝
常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)hash
Hash算法:循环
Hash算法的特色是单向不可还原,用户能够经过hash算法对目标信息生成一段特定长度的惟一hash值,却不能经过这个hash值从新得到目标信息。所以Hash算法经常使用在不可还原的密码存储、信息完整性校验等。只要源数据不一样,算法获得的摘要一定不一样。加密解密
常见的Hash算法有MD二、MD四、MD五、HAVAL、SHA密码
数字签名:支付
数字签名用来,保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
数字签名是 A将原始明文经过 hash 算法获得摘要,这个摘要是不可逆的;将明文加密,连同摘要一块儿发送给B;B接收到后解密,获得这个摘要 a
和加密的明文,再将加密明文解密获得原始明文,而后经过同一 hash 算法获得新的摘要 b
,比较 a
与 b
就可得知在传输过程当中是否被更改过。
所以数字签名可以验证信息的完整性。若是中途数据被纂改或者丢失。那么对方就能够根据数字签名来辨别是不是来自对方的第一手信息数据。
完整的非对称加密过程:
假如如今 你向支付宝 转帐(术语数据信息),为了保证信息传送的保密性、真实性、完整性和不能否认性,须要对传送的信息进行数字加密和签名,其传送过程为: 1.首先你要确认是不是支付宝的数字证书,若是确认为支付宝身份后,则对方真实可信。能够向对方传送信息, 2.你准备好要传送的数字信息(明文)计算要转的多少钱,对方支付宝帐号等; 3.你 对数字信息进行哈希运算,获得一个信息摘要(客户端主要职责); 4.你 用本身的私钥对信息摘要进行加密获得 你 的数字签名,并将其附在数字信息上; 5.你 随机产生一个加密密钥,并用此密码对要发送的信息进行加密(密文); 6.你用 支付宝的公钥对刚才随机产生的加密密钥进行加密,将加密后的 DES 密钥连同密文一块儿传送给支付宝; 7.支付宝收到 你 传送来的密文和加密过的 DES 密钥,先用本身的私钥对加密的 DES 密钥进行解密,获得 你随机产生的加密密钥; 8.支付宝 而后用随机密钥对收到的密文进行解密,获得明文的数字信息,而后将随机密钥抛弃; 9.支付宝 用你 的公钥对 你的的数字签名进行解密,获得信息摘要; 10.支付宝用相同的哈希算法对收到的明文再进行一次哈希运算,获得一个新的信息摘要; 11.支付宝将收到的信息摘要和新产生的信息摘要进行比较,若是一致,说明收到的信息没有被修改过。 12 肯定收到信息,而后进行向对方进行付款交易,一次非对称密过程结束。在这后面的流程就不属于本次非对称加密的范畴,算支付宝我的的自我流程,也就是循环以上过程。