我正在使用 bcrypt 来散列我的密码。但我也想用一些盐。我可以使用 uniqid() 函数为每个用户生成唯一的 Salt 吗?或者可能是熵更多的东西,比如
uniqid('', true);
我不了解生成盐的许多更复杂的方法。喜欢使用 for 循环和许多不同的功能。
谢谢你。
盐的目的是使哈希难以匹配。话虽如此,这取决于您使用的哈希值以及它发生冲突的可能性。Bcrypt 非常强大,但也有其缺点。
此代码应根据手册制作 23 个字符的盐。
printf("uniqid('', true): %s\r\n", uniqid('', true));
这将为您提供(256 位)64 位数字:
hash("sha256",time());
退房地穴也是如此。
使用 SALT 总是好的,因为它使找到原始密码变得更加困难(逆向工程)。这并不意味着他们无法获得匹配的哈希冲突并允许他们在您对数据库进行匹配时访问。散列越长,每个位置的字符潜力越大,碰撞就越难,你的系统也就越强大(理论上)。