我的主机提供的最佳散列算法

时间:2011-09-19 17:43:37

标签: php security encryption hash password-protection

我正在寻找一种良好的单向加密/散列方法,以便使用我的主机提供的算法之一安全存储密码。

以下是主持人提供的所有算法的列表:http://www.eresig.tk/hash.php

3 个答案:

答案 0 :(得分:8)

以上都不是。通用散列函数的问题在于它们很快,这意味着攻击者可以非常快速地逼真地强制执行大量密码,随着计算机变得更快,潜在客户看起来更加黯淡。

使用内置于PHP的bcrypt,支持从5.3.0开始的所有平台。如果您使用的是旧版本的PHP,则可以使用Suhosin patch设置bcrypt。

bcrypt的优势在于它具有一个工作因子,您可以将其设置为减慢散列过程。您不必过分关注花一点时间来检查给定密码是否有效,但攻击者需要更长时间来强制密码。

如果您想要超越它,您可能还想查看scrypt

答案 1 :(得分:1)

SHA-256对于密码哈希来说已经足够了,只需确保为每个用户使用不同的编辑盐。 salt可以是用户的ID,'创建时间'时间戳,绑定到该用户的GUID等等......在散列之前,您可以将盐附加到纯文本密码。

执行某种密码“最佳做法”有助于避免任何暴力攻击。不允许用户使用弱密码(少于N个字符,仅包含1个字符集中的字符等)。

答案 2 :(得分:1)

哈希问题在这个发烧友程序员网站上被夸大了。就哈希密码而言,任何算法都足够了。特别是当这个问题与通常的php应用程序的其他部分相比时。在普通的PHP网站上使用一些强大的哈希就像在稻草小屋的纸门上使用安全锁。

如果您真的想要保护用户密码不被您网站上的某些漏洞窃取(这样的漏洞应该更加关注),然后强制执行,然后在其他网站上对这些用户使用,那么你就是真正应该关心的是密码强度和salt,而不是哈希算法本身。 没有哈希技术可以保护像“1234”或“乔”这样的愚蠢传球。

因此,md5 + strong password + average salt优于usual password + super-extra-cool_hash并且已经足够了。