主机提供的最佳哈希算法


Best algorithm for hashing provided by my host

我正在寻找一种好的单向加密/哈希方法,使用我的主机提供的一种算法安全存储密码。

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

以上皆非。通用散列函数的问题在于它们速度很快,这意味着攻击者实际上可以非常快速地暴力破解大量密码,随着计算机变得越来越快,前景看起来越来越渺茫。

使用bcrypt代替,它是PHP内置的,从5.3.0开始支持所有平台。如果您使用的是旧版本的PHP,可以使用Suhosin补丁设置bcrypt。

bcrypt的优点是它有一个工作因子,你可以设置它来减慢哈希过程。您不必过分担心是否需要多花一点时间来检查给定的密码是否有效,但是攻击者需要更长的时间来暴力破解密码。

如果您想要更多的内容,您可能还需要查看script .

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

如果你真的想保护用户密码不被窃取,使用你的网站上的一些漏洞(虽然这样的漏洞你应该更关心),然后暴力强迫,然后对其他网站上的这些用户使用,那么你真正应该关心的是密码强度和盐,而不是散列算法本身。没有哈希技术会保护像"1234"或"joe"这样愚蠢的传递。

所以,md5 + strong password + average saltusual password + super-extra-cool_hash好,足够了。

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

实施某种密码"最佳实践"将有助于避免任何暴力攻击。不允许用户使用弱密码(少于N个字符,只包含一个字符集的字符等)。