我们可以使用uniqid()在PHP中生成一个唯一的Salt

时间:2013-05-24 20:50:08

标签: php passwords salt

我正在使用bcrypt来哈希我的密码。但我也想用一些盐。我可以使用uniqid()函数为每个用户生成一个唯一的Salt吗?或者可能是具有更多熵的东西,如

uniqid('', true);

我不了解生成Salts的许多更复杂的方法。比如使用for循环和许多不同的函数。

谢谢。

1 个答案:

答案 0 :(得分:2)

salt的目的是难以匹配hash。这就是说,这取决于您正在使用的哈希值,而how prone则取决于collisions。 Bcrypt非常强大but it has its drawbacks

此代码应生成23个字符的盐according to the manual

printf("uniqid('', true): %s\r\n", uniqid('', true));

这会得到(256位)64位数字:

hash("sha256",time());

也可以退房crypt

使用SALT始终是好的,因为它使得找到原始密码(逆向工程师)变得更加困难。这并不意味着他们无法获得匹配的哈希冲突,并且如果您正在对数据库进行匹配,则允许他们访问。散列越长,每个位置的字符潜力越大,碰撞就越困难,系统越强(理论上)。