我正在尝试验证加密的密码,但由于某种原因,该密码始终无效。
我在做什么错了?
例如,我的密码为'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";
答案 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.';
}