【发布时间】:2017-04-09 13:57:24
【问题描述】:
我想生成一些数据的哈希。 通过一些哈希算法,我可以找到最适合我的应用程序的 bcrypt 和 PBKDF。 可能会有不同的数据算法生成相同的哈希值(就像在 MD5 中,它可以为不同类型的数据生成相同的哈希值)。
根据许多专家的评论,bcrypt 是最好的安全散列算法,它提供了不同散列之间的唯一性。
但是,PBKDF2 是否提供哈希的唯一性?
编辑 1
我需要使用相同的输入数据生成哈希(哈希键将为相同的输入生成不止一次),但它不应该为不同的输入数据生成相同的哈希(可能在某些哈希算法中发生)。
【问题讨论】:
-
首先,这是错误的论坛。其次,您实际需要哪些属性以及您想要完成什么?
-
您是想根据密码生成加密密钥,还是只想获取某些数据的唯一标识符?
-
我想要基于某个唯一标识符的加密(散列)密钥,并且该散列密钥应该是唯一标识(不应具有具有不同 ID/密码的相同密钥)。我担心的是,哈希算法可能会为不同的 ID/密码生成相同的哈希键。那么 PBKDF2 会像 bcrypt 一样处理它吗?
-
如果您只需要一个唯一代表输入数据的散列,那么很可能任何当前的加密消息摘要(例如 SHA2)就足够了。发生碰撞的机会非常小,可以忽略不计。 但是只要您不解释您的用例是什么,我们就无法判断。
-
如果源域大于散列值的域,则散列函数无法提供唯一性,这几乎不是这种情况。即使源域很小,也总会有冲突的变化,即两个源值映射到同一个哈希值。因此,无论您选择或做什么,它们都无法提供独特性。
标签: security cryptography pbkdf2 hashalgorithm