原理
采用某种散列函数,输入不同长度的明文,得到相同的长度的密文,明文的微小变化都能引起密文的巨大变化。其实哈希散列算法不算是真正的加密,而是生成对应明文的指纹信息,用来校验数据的完整性。
安全性
不能通过密文反推明文,通常作为数据的完整性校验。
使用场景
生成信息摘要,验证信息的完整性。
代表算法
MD2、MD4、MD5、PANAMA、SHA-0、SHA-1、SHA-256、SHA-512 等;
<aside>
💡 MD5 是一种不可逆的 消息摘要算法 ,目前尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的 128bits 长度的串,通常表达为 32 个 16 进制字符。
</aside>
<aside>
💡 SHA1 是和 MD5 一样流行的消息摘要算法,然而 SHA1 比 MD5 的 安全性更强。对于长度小于 2^64 位的消息,SHA1 会产生一个 160bits(通常表达为 40 个 16 进制字符)的 消息摘要。
</aside>
/cal
<aside>
💡 HMAC 是密钥相关的 哈希运算消息认证码(Hash-based Message Authentication Code),HMAC 运算利用 哈希算法(MD5、SHA1 等),以 一个密钥 和 一个消息 为输入,生成一个 消息摘要。
HMAC 发送方 和 接收方 都有的 key 进行计算,而没有这把 key 的第三方,则是 无法计算出正确的散列值的,这样就可以防止数据被篡改。
</aside>