PHP password_hash()在不同的时间创建不同的哈希

时间:2019-06-01 10:02:44

标签: php hash

我正在使用用户登录系统创建一个网站。对于身份验证,我使用php password_hash()和password_verfiy()。

在密码恢复的代码中,我发现了一个错误。我正在创建一个随机密码,并使用password_hash()将其保存到数据库中。我还向用户发送一封电子邮件,其中包含未加密的新密码。但是身份验证不起作用。

在脚本末尾,我还打印了密码,并且数据库中打印的哈希密码和打印的哈希密码和哈希密码不同。

$zeichen = '0123456789abcdefghijklmnopqrstuvwxyz';
  $newPassword = '';
  $anz = strlen($zeichen);
  for ($i=0; $i<16; $i++) {
    $newPassword .= $zeichen[rand(0,$anz-1)];
  }

... (some other code) ...

$sql = "UPDATE user SET password = :password WHERE email = :email";

$para = array(
  'password' => password_hash($newPassword, PASSWORD_DEFAULT),
  'email' => $email
);

DATABASE->SEND_FUNCTION(); //not a real function

... (some other code) ...

echo $newPassword; 
echo password_hash($newPassword, PASSWORD_DEFAULT);

如您所见,我首先创建一个新密码,然后将其保存到数据库中。最后,我回显了两种形式的密码。 echo $newPassword在“新密码电子邮件”中给了我相同的字符串。但是echo password_hash($newPassword, PASSWORD_DEFAULT);向我显示的字符串与我在数据库中看到的字符串不同。

谢谢大家的帮助。我很失落。

0 个答案:

没有答案