1.摘要和加密是两个概念
1.1 消息摘要(Message Digest)
摘要是哈希值,我们通过散列算法比如MD5算法就可以得到这个哈希值。
摘要只是用于验证数据完整性和唯一性的哈希值,不管原始数据是什么样的,得到的哈希值都是固定长度的。
不管原始数据是什么样的,得到的哈希值都是固定长度的,也就是说摘要并不是原始数据加密后的密文,只是一个验证身份的令牌。所以我们无法通过摘要解密得到原始数据。
常用的摘要算法有:MD5算法(MD2 、MD4、MD5),SHA算法(SHA1、SHA256、SHA384、SHA512),HMAC算法
1.2 加密
加密是通过 “加密算法” 将 “明文” 加密成 “密文”。
我们可以通过 “密钥” 和 “解密算法” 将 “密文” 还原成 “明文”。
1.3 摘要的理解误区
错误的理解:
通过加密算法得到信息摘要。
可以通过对信息摘要这个加密结果进行解密得到原始数据。
错误纠正:
得到摘要的算法是散列算法,没有所谓的 “加密” 、“解密” 的说法,这些说法其实都是不严谨的,虽然在很多书上都说这么描述的。
摘要只是验证身份的令牌,我们无法通过摘要还原出原始数据。
如:MD5算法是不可逆的,我们无法从算法入手还原出MD5算法处理前的结果。由于MD5是信息-摘要算法,通过摘要是无法得到原始数据的,所以解密这一说法本身就是错误的。