我正在使用bcrypt来哈希我的密码。但我也想用一些盐。我可以使用uniqid()函数为每个用户生成一个唯一的Salt吗?或者可能是具有更多熵的东西,如
uniqid('', true);
我不了解生成Salts的许多更复杂的方法。比如使用for循环和许多不同的函数。
谢谢。
答案 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始终是好的,因为它使得找到原始密码(逆向工程师)变得更加困难。这并不意味着他们无法获得匹配的哈希冲突,并且如果您正在对数据库进行匹配,则允许他们访问。散列越长,每个位置的字符潜力越大,碰撞就越困难,系统越强(理论上)。