PBKDF2是否会生成唯一的哈希值?

时间:2016-11-25 08:11:22

标签: security cryptography pbkdf2 hashalgorithm

我想生成一些数据的哈希值。 通过一些哈希算法,我可以找到最适合我的应用程序的bcrypt和PBKDF。 可能存在这样的情况:使用不同的数据算法生成相同的散列(如在MD5中,它可以为不同类型的数据生成相同的散列)。

通过对许多专业知识的评论,bcrypt是最好的安全散列算法,它提供了不同散列之间的唯一性。

但是,PBKDF2是否为哈希提供了唯一性?

修改1

我需要使用相同的输入数据生成哈希(对于相同的输入将生成多次哈希键)但是它不应该为不同的输入数据生成相同的哈希(可能在某些哈希算法中发生)。

1 个答案:

答案 0 :(得分:1)

诸如SHA-2之一的算法就足够了。生成的哈希不是消息唯一的。甚至确实有无数个消息散列到相同的值。诀窍是找不到创建此哈希的其他消息之一。

使用不同的消息生成两个哈希值时产生冲突的几率等于SHA-256的1/2 ^ 256。但是,您可以生成并存储哈希值,然后计算所有可能的之一相同的机会。在这种情况下,生日问题有效。这就是散列只提供一半安全性的原因。因此,产生2 ^ 128个哈希的碰撞的机会是(约)1/2 ^ 128或者在34028236692093846346337460743176821145中为1.这就是为什么你只需要担心破坏的哈希函数中的冲突,例如MD5(可能还有SHA-1)不久的将来。)

实际上,PBKDF2的内部状态与使用的内部哈希相同。使用PBKDF2(除了作为密钥派生函数而不是哈希)根本不会帮助你。它与内部哈希一样容易受到攻击(或者更确切地说,易受攻击)。

相关问题