【发布时间】:2017-09-03 19:22:51
【问题描述】:
基本上单向函数有两个属性: 1. 不可逆 2. 防碰撞(这意味着没有两个相同的词具有相同的哈希值,如果我错了,请纠正我)
另一方面,我看到加盐哈希密码用于为密码的哈希值提供更高的安全性,并为具有相同纯值的密码提供冲突避免。
那么为什么会发生这种情况,哈希函数不应该具有抗碰撞性,为什么当哈希函数已经具有该属性时,Salt 必须提供这个?
提前谢谢你。
【问题讨论】:
-
想象一下,我知道你使用
SHA256哈希函数。您的一些用户选择了非常弱的123密码。如果你不放salt,我可以用brute force(或rainbow tables)打破它:我会运行@所有短字符串(包括123)上的987654323@并找到密码。 -
加盐密码哈希与冲突无关。每用户盐保证如果两个(或更多)用户具有相同的密码
"foo",他们的密码哈希将完全不同。因此,攻击者在猜到其中一个用户的密码后,并不会自动获得使用相同密码的所有其他用户的访问权限。
标签: security hash hash-collision saltedhash