对称加密 非对称加密总结
对称加密:A与 B 之间之间的通讯数据都用同一套的密钥来进行加密解密。
优点
简单快捷,密钥较短,且破译困难。
缺点
如果用户一旦多的话,管理密钥也是一种困难。不方便直接沟通的两个用户之间怎么确定密钥也需要考虑,这其中就会有密钥泄露的风险,以及存在更换密钥的需求。
对称加密通常有 DES,IDEA,3DES 加密算法。
非对称加密:用公钥和私钥来加解密的算法。打个比方,A 的公钥加密过的东西只能通过 A 的私钥来解密;同理,A 的私钥加密过的东西只能通过 A 的公钥来解密。顾名思义,公钥是公开的,别人可以获取的到;私钥是私有的,只能自己拥有。
缺点
加解密比对称加密耗时.
优点
比对称加密安全.
但是非对称加密也是存在漏洞,因为公钥是公开的,如果有 C 冒充 B 的身份利用 A 的公钥给 A 发消息,这样就乱套了,所以接下来就采用非对称加密+摘要算法+数字签名的机制来确保传输安全。
常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
Hash算法(摘要算法)
Hash算法的特点是单向不可还原,用户可以通过hash算法对目标信息生成一段特定长度的唯一hash值,却不能通过这个hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。只要源数据不同,算法得到的摘要必定不同。
常见的Hash算法有MD2、MD4、MD5、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 确定收到信息,然后进行向对方进行付款交易,一次非对称密过程结束。在这后面的流程就不属于本次非对称加密的范畴,算支付宝个人的自我流程,也就是循环以上过程。
原文:https://www.cnblogs.com/JavaHh/p/13138494.html