密码验证功能一直不起作用

时间:2018-07-05 10:56:08

标签: php encryption

我正在尝试验证加密的密码,但由于某种原因,该密码始终无效。

我在做什么错了?

例如,我的密码为'test',所以我这样做:

$hash = '$2y$10$4Ed6XtU2E6qjzSOSUOA0xuBEA0sokTJMrDBH5ttgJzMVXSh0muoX.';
$password = 'test';

if (password_verify($password, $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}

但是密码'geheim123'确实适用于此哈希:

$hash = '$2y$10$LY0l0pOc8vLCzI.VvxK3gOTlXoVwnP2dlAzicj9uE62Q39XfeTY/6';
$password = 'geheim123';

if (password_verify($password, $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}

第二个有效但又一个无效的原因是什么?

这是我加密密码的地方:

$pass = password_hash($_POST['password'], PASSWORD_DEFAULT)."\n";

1 个答案:

答案 0 :(得分:0)

您似乎“测试”密码没有问题。

一样对您的密码进行哈希处理
echo password_hash("test", PASSWORD_DEFAULT)."\n";

这给了我$2y$10$4a8QVv3VZNnXpgbT66I1He6eHqYBj.N94GIS7yHMoEW2Eb1Eq003O,但是运行该代码时您可能会得到一个新的哈希值。但它仍会提供相同的有效状态

    $hash = '$2y$10$4a8QVv3VZNnXpgbT66I1He6eHqYBj.N94GIS7yHMoEW2Eb1Eq003O';
$password = 'test';



if (password_verify($password, $hash)) {
    echo 'Password is valid!'; // okay
} else {
    echo 'Invalid password.';
}