我只是读一后创建一个登录系统,并在阅读有关口令散列我看到了。
我们将存储一个sha256哈希,它是一个始终包含64个字符的字符串。
本文正在教导使用sha256哈希函数。读完这篇文章后,我没有停下来,而是开始搜索有关创建安全登录系统的更多信息,然后我想出了WikiHow的这篇文章。在本文中,他们正在使用sha512哈希函数。这让我很困惑,我将在下一个登录系统中使用哪个功能。我仍然在google上搜索更好的文章,并通过crackstation找到了这篇文章。笔者同时推荐sha256和sha512。
仅密码哈希函数可用于实现密码哈希。诸如SHA256,SHA512,RipeMD和WHIRLPOOL之类的哈希函数是加密哈希函数。
我以为我的搜索结束了,可以使用sha256
或sha512
运行了,但是在搜索更多时,我发现了此问题。罗伯特·K(Robert K)接受的答案对我来说是新事物。我之前从未听说过的东西是bcrypt和scrypt。
所有这些东西都是在2到4年前写的。
问题
这些天来,PHP使用哪种最佳密码哈希算法?
这里最主要的是您想要选择一个很慢的哈希值。这些哈希中唯一可行的攻击向量是暴力破解。这意味着,攻击者只能一个又一个地尝试所有可能的密码,使用与您相同的算法对它们进行哈希处理,然后将其与哈希进行比较。一个密码花费的时间越长,找到匹配项就越不可行。
SHA系列算法被设计为快速的,因为它们并非旨在用于此目的。因此,它们本身就不适合密码散列。尽管它们可以用作使它们适用的算法的一部分,例如PBKDF2(简而言之,它会重复执行数千次哈希处理以扩展它)。
bcrypt和scrypt被明确设计为速度较慢,因此更适合于密码哈希。就CPU能力而言,bcrypt的设计非常昂贵,而在内存消耗方面,scrypt的设计却非常昂贵。使用当今的硬件,CPU的可伸缩性比内存的可伸缩性更好,因此,目前scrypt被认为是最好的使用方式。尽管目前这是非常前沿的技术,但在可用代码方面却鲜有支持。另一方面,PHPpassword_hash
直接使用bcrypt来支持。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句