Wonderjar's Blog

加解密简单总结

2019-10-12

Hash算法加密

例如md5, sha等

单向不可还原,利用多次取余,一个结果对应无穷多的原始值,只能做验证

对称加密

A与B之间之间的通讯数据都用同一套的密钥来进行加密解密

非对称加密

例如RSA等

用公钥和私钥来加解密的算法。打个比方,A 的公钥加密过的东西只能通过 A 的私钥来解密;同理,A 的私钥加密过的东西只能通过 A 的公钥来解密。顾名思义,公钥是公开的,别人可以获取的到;私钥是私有的,只能自己拥有。

利用两个极大的质数,而特大数字的质因数分解做不到

数字签名

数字签名用来,保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
数字签名是 A将原始明文通过 hash 算法 (http://wonderjar.me/2019/10/11/base64/) 得到摘要,这个摘要是不可逆的;将明文加密,连同摘要一起发送给B;B接收到后解密,得到这个摘要 a 和加密的明文,再将加密明文解密得到原始明文,然后通过同一 hash 算法得到新的摘要 b,比较 a 与 b 就可得知在传输过程中是否被更改过。
因此数字签名能够验证信息的完整性。如果中途数据被纂改或者丢失。那么对方就可以根据数字签名来辨别是否是来自对方的第一手信息数据。

再解释一下,S代表服务端,持有私钥,C代表客户端,持有公钥
当C给S发数据时,使用公钥加密,可以保证内容即使被拦截,拦截者因为没有私钥也解不开加密内容
当S给C发数据时,S将数据hash产生摘要,将摘要和数据都使用私钥加密,拦截者拦截后用公钥看到内容和摘要,但拦截者即使修改内容,产生新的hash,却因为缺少私钥而无法产生加密后摘要,这就是数字签名的意义

Tags: Common