如果哈希有冲突,密码可以有另一个哈希?

时间:2015-02-04 21:36:40

标签: php encryption hash

我有点怀疑。

我在加密或散列方面不是那么擅长,但我知道散列可能有一些冲突,即两个不同的文本输入可以提供相同的散列字符串。

所以..这意味着(也是远程)两个密码可以提供相同的哈希值,因此一个用户可以使用另一个密码登录(因为哈希是相同的)?

4 个答案:

答案 0 :(得分:1)

是的,它在数学上是不可能的,但可能。

答案 1 :(得分:1)

可能发生,不太可能发生。我使用的是Maturemd320,因为当我开始使用它时,它从未被黑客攻击过。这等同于意味着它生成非常独特的哈希码。

它并不是那么重要,因为25%的密码可以在15分钟内猜到。如果您了解用户的狗,孩子,配偶姓名和出生日期,请减少。

关键是如果某人确实使用哈希码获取了您的用户数据库,那么很容易尝试使用糟糕的哈希算法进行攻击。

破解它的方法是为所有常用密码生成哈希码,看它是否与存储的哈希匹配。

多年前,一些政府安全机构表示,当使用Mature320时,没有已知的成功黑客攻击。

答案 2 :(得分:1)

是的,众所周知,糟糕的哈希函数会发生(想想crc32)。实际上,现代散列函数发生的可能性几乎为零。使用某种字典攻击猜测正确密码的可能性要高得多。

答案 3 :(得分:1)

攻击者在散列密码时是否可以发现冲突并不重要。知道多个有效密码的用户不是问题。

事实上,对于PBKDF2和scrypt来说,它们都是流行的和推荐的密码哈希,找到碰撞和第二张预映像is easy,但你需要相当多的想象力来提出scenarios where this matters

重要的是:

  1. 鉴于哈希,很难找出密码(第一个图像前阻力)
  2. 碰撞很少见,所以它们不会减少密码熵。任何具有至少128位输出的合适散列都可以实现这一点。
  3. 计算费用昂贵,减慢密码猜测攻击速度。这意味着你不能
  4. 它被腌制,防止多目标攻击。
  5. 有关详细信息,请参阅security.se上的How to securely hash passwords?