密码加密:PBKDF2(使用sha512 x 1000)与Bcrypt

时间:2010-12-13 20:31:26

标签: passwords hash password-protection bcrypt pbkdf2

我一直在阅读有关Gawker事件的文章,有几篇关于仅使用bcrypt哈希密码的文章已经出现,我想确保我的哈希机制足够安全以避免切换到另一种方法。在我目前的应用程序中,我选择了使用sha2-512进行PBKDF2实现,并且至少进行了1000次迭代。

我是否可以就使用PBKDF2与Bcrypt以及我是否应该实施更改提出意见?

2 个答案:

答案 0 :(得分:27)

你对PBKDF2很好,不需要跳转到bcrypt。

尽管如此,建议在2000年使用1000次迭代,现在你需要更多。

另外,使用bcrypt时应该更加小心:

  

值得注意的是,虽然对于大多数类型的密码,bcrypt比PBKDF2强,但是对于长密码而言,它落后了;这是由于bcrypt无法使用超过密码短语的前55个字符而我们的估计成本和NIST的结果。   密码熵的估计表明bcrypt的55个字符的限制不是   目前可能引起问题的依赖于系统的实现者   bcrypt可能是明智的,要么解决这个限制(例如,通过“prehashing”密码短语使其达到55个字符的限制)或采取措施   防止用户在第56及以后放置太多密码熵   字符(例如,通过要求网站的用户在输入中键入他们的密码   只有55个字符的空格框。)

From scrypt paper [PDF]

那就是说,还有scrypt

如果没有上面提到的scrypt文件中的表格,任何比较都是不完整的:

Estimated cost of hardware to crack a password in 1 year.

PBKDF2-HMAC-SHA256的迭代次数有86,000和4,300,000。

答案 1 :(得分:-7)

评论(重新:标题):

  • 除非必须,否则不要使用加密(可逆)来存储密码。
  • 由于您提供了散列(不可逆)选项,我认为您不需要可逆性。
  

关于使用PBKDF2与Bcrypt和   我是否应该实施   改变?

我的意见:

在Bcrypt上使用PBKDF2。 (我完全相信SHA比Blofish更有信心)

至于你是否应该“实施改变”,我不知道你在问什么。

编辑以更清楚地将加密/散列讨论与陈述我的偏好w / r / t算法分开。