@m1rvi

Как сравнить пароль со старым md5?

Столкнулся с проблемой, что сравнение паролей не хочет давать true, хоть я точно знаю, что они одинаковы.
md5, потому, что моя задача сохранить бд с юзерами, а сайт делался еще 5 лет назад и его надо обновить и добавить другие фичи..
Вот код:
if(password_verify($data['password'], $row['pass'])) {
//row - это то что я достал с дб(пароль). 
$_SESSION['logged_user'] = $user;
header("Location: cabinet/index.php");
}
else { 
    echo "не получилось";
}

На всякий случай:
spoiler

e67459d13869483c8d70238fee01b158c6459609a3854b724db0221fd0d659cd - хешированный пароль в дб
1234 - реальный пароль


Простите за тупой вопрос
  • Вопрос задан
  • 397 просмотров
Решения вопроса 1
@dzhebrak
Если в бд у вас хранится md5-хеш пароля (что не рекомендуется), то сравнивайте пароли с помощью функции md5 https://www.php.net/manual/ru/function.md5.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
Можно хранить к примеру несколько видов хешей - старые md5 и новые, полученные функцией password_hash.
А в самом коде проверять, если хэш начинается с $ - то это новый хэш, проверять его через password_verify, а если нет - то это старый хэш, проверять его примерно так:
if (hash_equals(md5($password), $hash))
Ну и в том случае, если хэш старого формата подошёл, то не просто пустить пользователя, но и сгенерировать из введённого им пароля новый хэш функцией password_hash и сохранить его в бд, чтобы со временем старые хэши заменились на новые.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы