Phalcon php hash相同的密码产生多个结果

时间:2014-07-16 17:05:42

标签: php hash phalcon

我使用此语句用Phalcon散列密码:
$ hashedPassword = $ this-> security-> hash($ password)

但是此语句使用相同的密码返回不同的结果。

例:
设置$ password = 123 我得到$ hashedPassword,其中包含以下值:

$ 2A $ 08 $ T2Rf9IcQHTj7TpY.gsfGiexZ35 / KK9kS3fLElxaw8LGXhjnE01f5K 和 的 $ 2A $ 08 $ E2mjApECMbRKQFZodgLkEOpDLSV / tEjTe1HV3q2LLG9UINj9M9GBm 和 的 $ 2A $ 08 $ aZmgsMmG2xRueVzP6tkx2ucWGPZMzUwIccXbLJnqoRwDsSnT4zc.q


以下是我用来检查用户密码的代码,
请让我知道我错过了什么。

if ($this->request->isPost() == true)
{
    $email = $this->request->getPost ("email");
    $password = $this->request->getPost ("password");

    $conditions = "email = ?1 AND admin = ?2";
    $parameters = array(1 => $email, 2 => 1);

    $users = Users::findFirst(array(
        $conditions,
        "bind" => $parameters
    ));

    if($users)
    {
        $security = new Phalcon\Security();
        $checkHashValue = $security->checkHash($password, $user->password);
        if($checkHashValue)
        {
            $this->flash->success($users->fullname);
        }
        else
        {
            //Print debug information
            $hash = $security->hash($password);

            $checkHash = $security->checkHash($password, $hash);

            $this->flash->error("Password: ". $password. 
            "<br/>Hash: " . $hash . "<br/>Check Hash: " . $checkHash . 
            "<br/>Check HashValue: ". $checkHashValue);
        }
    }
    else
    {
        $this->flash->error($password);
    }
}

解决方案:我的变量中有一个拼写错误&#34; user&#34;而不是&#34;用户&#34;。

2 个答案:

答案 0 :(得分:1)

它是如何工作的。它每次都会创建一个随机哈希。要使用security->checkPassword()

检查密码

答案 1 :(得分:0)

解决方案:我的变量“user”中有一个拼写错误,而不是“用户”。