哪个是最好的PHP密码哈希算法?

前端之家收集整理的这篇文章主要介绍了哪个是最好的PHP密码哈希算法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Secure hash and salt for PHP passwords14个
我刚读了一个 post来创建一个登录系统,在阅读时我看到了密码哈希.

We are going to store an sha256 hash which is a string always
containing 64 characters.

本文正在教授使用sha256哈希函数.阅读本文之后,我没有停下来开始搜索更多关于创建安全登录系统的内容,然后我在wikiHow之前提出了这篇文章.在本文中,他们使用的是sha512哈希函数.这真的让我感到困惑,我将在下一个登录系统中使用哪个功能.我仍然搜索谷歌更好的文章,并在crackstation找到这篇文章.作者推荐sha256和sha512.

Only cryptographic hash functions may be used to implement password
hashing. Hash functions like SHA256,SHA512,RipeMD,and WHIRLPOOL are
cryptographic hash functions.

我认为我的搜索结束了,我可以使用sha256或sha512功能,但在搜索更多时我发现了这个SO Question. Robert K接受的答案对我来说有新的东西.关于我以前从未听过的事情是bcrypt和scrypt.

所有这些东西都写在大约2到4年前.

这些天用于PHP的最佳密码哈希算法是哪一种?

这里最重要的是你想要选择一个缓慢的哈希.任何这些哈希值唯一可行的攻击向量是强制攻击.这意味着,攻击者只能一个接一个地尝试所有可能的密码,使用与您相同的算法对它们进行哈希处理,并将它们与哈希值进行比较.一个密码需要的时间越长,找到匹配就越不可行.

SHA系列算法设计得很快,因为它们不是为了这个目的而设计的.因此,它们本身有点不适合密码散列;虽然它们可以用作使它们适合的算法的一部分,例如PBKDF2(简而言之,重复散列数千次来拉伸它).

bcrypt和scrypt明确地设计得很慢,并且更适合密码散列. bcrypt在cpu功率方面设计非常昂贵,而scrypt在内存消耗方面设计得非常昂贵.使用当今硬件的cpu功率可以比内存更好地扩展,因此scrypt目前被认为是最好的选择.虽然它目前非常前沿,但在可用代码方面几乎没有得到支持.另一方面,bcrypt由PHP直接使用password_hash支持.

猜你在找的PHP相关文章