我正在阅读 PHP 中的密码安全性,偶然发现了一个有趣的声明:
将密码作为盐的哈希值进行哈希处理,返回相同的哈希值
没有多想,我去了php.net,发现那是同样的事情。
让我们看一个例子:
crypt("test", "test"); -> teH0wLIpW0gyQ
crypt("test", "teH0wLIpW0gyQ"); -> teH0wLIpW0gyQ
我完全可以理解 PHP 中的 crypt 会生成给定字符串的单向哈希。
- 我不明白的是我们如何使用两种完全不同的盐获得相同的哈希输出?
- 这是否意味着可能有其他盐可以给我相同的哈希值?
跟进
谢谢大家的指点。我现在可以看到默认行为是只使用 salt 的前两个字符,这完全回答了我的所有问题。感觉很傻,但是...