会有多强大
return sha1($salt.sha1($passwd));
与仅比较:
return sha1($salt.$passwd);
$salt
是一个长度为12的每用户字符串,由强随机ASCII组成。
答案 0 :(得分:4)
它的强度只有两倍,因为攻击者需要对暴力攻击执行两倍的SHA1计算。
当然,这仍然不是很令人印象深刻。另一方面,在循环中执行5000次SHA1对于授权是实用的,但是攻击需要花费5000倍的时间 - 这种技术称为key strengthening。然而,它实际上只是一个穷人可以替代Jacco提到的适应性成本哈希算法。
答案 1 :(得分:3)
顺便说一下,通常建议使用
sha1($login.$salt.$passwd);
以便具有相同密码的2个用户不会具有相同的哈希值。
答案 2 :(得分:1)
据我所知,力量没有差异。
由于通常的做法是将salt添加到密码哈希中,因此攻击者通常知道盐。但这并没有打败盐的目的。
一般来说,将$ login / $用户名添加到哈希(Vinzz的解决方案)并不是一个好的理念,因为如果用户更改了用户名,它将导致问题。更好的解决方案是使用随机盐。
使用的散列算法 会产生影响。 SHA1
被视为cryptographically broken,不应用于哈希密码。
一般来说BCRYPT
(一种基于Blowfish的自适应成本哈希算法)被认为是最佳实践(PHP crypt();的CRYPT_BLOWFISH
标志)
其他可靠的选项是SHA256及以上。
修改强>
我在这里写了一个更长的答案: stackoverflow.com/questions/1645161/salt-generation-and-open-source-software/