【发布时间】:2013-06-20 09:33:14
【问题描述】:
我正在使用 bcrypt 对我的密码进行哈希处理,但似乎 symfony2 身份验证系统不会产生与 php 的本机 crypt 函数相同的哈希值。 Bellow 是我为我的用户密码生成的盐:
$salt = '$2y$13$' . substr(md5(uniqid(rand(), true)),0,21) . '$';
$this->setPassword('test',$salt);
在我的 security.yml 文件中,我只是在做:
encoders:
Blogger\BlogBundle\Entity\User:
algorithm: bcrypt
iterations: 13
这两种编码方法会产生不同的哈希值有什么原因吗?我使用的库是 ircmaxell/password-compat。
【问题讨论】:
-
请提供您用于测试 crypt 功能的代码。也许是迭代次数?
-
什么版本的 Symfony?另外,为什么要手动设置盐?此外,你为什么以如此可怕的方式产生盐? Symfony 会为你做这件事。你为什么要让它变得比它需要的更困难?证明:Symfony's Source Code
-
这是一种预期行为,您每次都会获得不同的哈希值,因为每次计算都会生成不同的(随机)盐。这样攻击者就无法判断两个用户是否输入了相同的密码。如果你想测试哈希,那么只需测试验证是否失败/成功。
标签: php authentication symfony passwords bcrypt