Я использую метод blowfish, чтобы хэшировать пароли от пользователей, когда они регистрируются.
В форме регистрации есть поле «Введите пароль» и поле «Подтвердить пароль».
Поэтому, чтобы проверить, совпадают ли пароли, я использовал хешированные версии для сравнения. Но тогда, похоже, не совпадает.
Пожалуйста, смотрите код ниже …
получить значения из супер глобальных переменных и хэшировать их.
$hashed_password = password_encrypt($_POST['password']);
$conf_hashed_password = password_encrypt($_POST['conf_password']);
вызвать функцию
passwords_match_check($hashed_password, $conf_hashed_password);
Определенная функция
function passwords_match_check($hashed_pw, $conf_hashed_pw){
global $errors;
if($conf_hashed_pw != $hashed_pw){
$errors['pws_no_match'] = "Passwords do not match";
}
}
Этот код всегда говорит, что пароли не совпадают, даже если я знаю, что пароли совпадают …
Итак, где я ошибся …?
Это нормально, если я просто использовал значения без хеширования для сравнения?
Просто используйте password_hash()
а также password_verify()
(оба включены в php 5.5+). И если вы на 5.3 — 5.5, используйте паролем Compat библиотека обратной совместимости.
Обычай password_encrypt()
функция не нужна и, скорее всего, менее безопасна, чем встроенная. Так что просто используйте встроенный.
Пока вы не поделитесь функцией password_encrypt, трудно сказать.
Если метод запускает шифрование однозначно, оба хеша будут разными.
(Может быть причиной вашей неудачной проверки.)
Почему бы не проверить необработанный ввод вместо хеширования?