我应该如何在我的密码哈希中加入salt?

时间:2010-01-11 16:07:23

标签: php security hash salt

会有多强大

return sha1($salt.sha1($passwd));

与仅比较:

return sha1($salt.$passwd);

$salt是一个长度为12的每用户字符串,由强随机ASCII组成。

3 个答案:

答案 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/