我应该使用哪种密码哈希方法?

Bha*_*ani 6 java passwords hash password-protection

这个问题让我开始再次考虑密码哈希.我目前使用bcrypt(特别是py-bcrypt).我听说过很多关于PBKDF2和scrypt的消息.

我想知道的是,是否有任何"更现代"的密码哈希方法,我可能不知道(因为它们是新的,所以人们不会那么多谈论它们),或者也许其他方法我不知道知道关于.

然后从那里继续,我应该使用哪一个?大多数人似乎都推荐使用bcrypt,但我想知道这是不是因为它已经过时了(阅读:众所周知).scrypt似乎更好(内存使用量可变).我对PBKDF2了解不多.

因此,如果我制定一个用户管理方案,我应该使用哪一个?或者我应该使用完全不同的东西?

ato*_*tom 6

PBKDF2用于WPA/WPA2和域缓存凭证2(AKA DCC2).您可以更改HMAC-SHA1的迭代以提高安全性.这种减缓裂解过程的方法是不间断的.但是,由于它基于SHA1,因此您可以将其称为GPU友好型攻击.

bcrypt和scrypt都使用查找表.这种内存依赖性使其对GPU不友好.然而,最新的28 nm GPU架构重新启用了对内存的快速访问.

现在你应该赞成bcrypt或scrypt.使用依赖于内存的哈希值是一个不错的选择,但将来这可能会改变.密切关注破解者的GPU性能如何增加.它们有可能达到一个事件视界,最好切换回刚刚执行GPU友好的哈希但增加迭代次数.