我正在寻找一种好的单向加密/散列,用于安全存储密码,使用我的主机提供的算法之一。
下面是由主机提供的所有算法的列表:http://www.eresig.tk/hash.php
发布于 2011-09-20 01:48:07
以上都不是。通用散列函数的问题是它们速度很快,这意味着攻击者可以非常快地破解大量密码,随着计算机变得更快,前景看起来更加黯淡。
取而代之的是bcrypt,它内置在PHP中,支持从5.3.0开始的所有平台。如果你使用的是一个老版本的PHP,你可以用Suhosin patch设置bcrypt。
bcrypt的优点是它有一个工作因子,您可以设置该因子来减慢散列过程。如果你多花一点时间检查给定的密码是否有效,你并不会过分担心,但攻击者破解密码所需的时间会长得多。
如果你想超越这一点,你可能还想看看scrypt。
发布于 2011-09-20 02:28:20
SHA-256对于密码散列来说已经足够了,只需确保为每个用户使用不同的编辑盐即可。盐可以是用户的ID、“创建于”时间戳、绑定到该用户的GUID,等等……在散列之前,您需要将盐附加到纯文本密码中。
强制实施某种密码“最佳实践”将有助于避免任何暴力破解攻击。不允许用户使用弱密码(少于N个字符,仅包含1个字符集中的字符,等等)。
发布于 2011-09-20 02:41:05
散列问题在这个狂热的程序员网站上被夸大了。在散列密码方面,任何算法都足够了。特别是当这个问题与通常的php应用程序的其他部分相比时。在通常的PHP站点上使用一些强哈希就像在稻草屋的纸门上使用安全锁一样。
如果你真的想保护用户密码不被窃取使用你的网站上的一些漏洞(虽然这样的漏洞你应该更加关注),然后暴力强制,然后在其他网站上用来对付这些用户,那么你真正应该关心的是密码强度和salt,而不是散列算法本身。没有散列技术可以保护像"1234“或"joe”这样的愚蠢传递。
因此,md5 + strong password + average salt比usual password + super-extra-cool_hash更好,而且已经足够了。
https://stackoverflow.com/questions/7475030
复制相似问题