CakePHP 3 DefaultPasswordHasher

时间:2014-09-14 19:46:10

标签: cakephp hash cakephp-3.0

我正在创建一个包含password和password_again字段的身份验证表单。所以我可以检查以确保它们匹配,我正在使用UsersTable的beforeSave()函数来处理散列。作为测试,我只是设置它来向我显示password_again,它的散列结果然后死掉。

    public function beforeSave($event, $entity){
        debug($entity->password_again);
        $hasher = new DefaultPasswordHasher();
        $entity->password_again = $hasher->hash($entity->password_again);
        debug($entity->password_again);
        die();
    }

我很好奇为什么每次重新加载结果时哈希都会不断变化。我希望每次重新加载时哈希都保持不变。提前谢谢。

编辑:事实证明你不应该对两个密码进行散列,然后尝试比较它们。相反,DefaultPasswordHasher->检查(password_again,password_hash)将验证密码是否与您匹配。

2 个答案:

答案 0 :(得分:2)

DefaultPasswordHasher使用PHP的password_hash函数,默认情况下每次使用不同的salt使用blowfish算法,每次调用都会产生不同的哈希值。

答案 1 :(得分:0)

public function checkPassword($passedPassword, $actualPassword) {
    if ((new DefaultPasswordHasher)->check($passedPassword, $actualPassword)) {
        return true;
    } else {
        return false;
    }
}