哈希算法
ASH 算法是一种消息摘要算法,不是一种加密算法,但由于其单向运算,具有一定的不可逆性,成为加密算法中的一个构成部分,完整的加密机制不能仅依赖 HASH 算法。
好的哈希算法需要好的哈希函数
hash函数的属性
-
不可逆性
hash 函数有点像绞肉机:你把牛排放在一端,就可以从另一端得到汉堡包,你没有办法从汉堡包中把牛排放回去 -
可复现的
这意味着如果我们把相同的输入 header 和载荷多次的 hash,我们总是会得到完全相同的结果。 -
无冲突
如果我们多次向它提交不同的值,根据每次的输入值都会得到唯一的结果。 -
不可预测性
根据已知输出是不可能用连续增量逼近的方法来猜测输入的。
哈希主要用途
- 文件校验
- 数字签名
- 鉴权协议
需 要鉴权的一方,向将被鉴权的一方发送随机串(“挑战”),被鉴权方将该随机串和自己的鉴权口令字一起进行 Hash 运算后,返还鉴权方,鉴权方将收到的Hash值与在己端用该随机串和对方的鉴权口令字进行 Hash 运算的结果相比较(“认证”),如相同,则可在统计上认为对方拥有该口令字,即通过鉴权。
哈希和加密区别
最大的区别:哈希是真正不可逆的,加密是可逆的
用途不同
- 如果被保护数据仅仅用作比较验证,在以后不需要还原成明文形式,则使用哈希;
- 如果被保护数据在以后需要被还原成明文,则需要使用加密。
网友评论