@m1rvi

Как перевести пароли с md5 на bcrypt?

Есть база данных с клиентами, у них понятное дело есть пароли, но они все все на md5. Старый сайт делался на symfony2. Как переводить на новый bcrypt? Это вообще возможно ?
  • Вопрос задан
  • 374 просмотра
Решения вопроса 2
@alexalexes
Сморите по регламенту сайта, каков официальный срок действия пароля (если нет такого, то определяетесь с этим).
1. Создаете в базе новое поле под bcrypt пароль, а также дату смены пароля.
2. Делаете авторизацию использующую как md5, так и bcrypt если последняя задана.
3. Разрабатываете систему оповещения для пользователей, у которых истек срок действия пароля.
4. Ставите дату пароля такой же как и дату регистрации пользователя, если не использовали это раньше.
5. При смене пароля пишете только bcrypt, md5 не используете, лучше сделать поле-флаг, что пользователь менял пароль уже по новой технологии.
В течение пару периодов срока действия пароля будет постепенный переход на новый хэш.
Активных пользователей придется как-то стимулировать, чтобы сменили пароль.
Неактивные будут восстанавливать пароль, например, по email, если они вернутся на ваш ресурс и вы решите когда-нибудь больше не поддерживать md5 хэш.
PS: Принудительно заставлять менять пароль пользователю - это не самый оптимальный вариант. Заменяйте хэш пароля по новому алгоритму, как только получили от пользователя исходный пароль, который валиден по старому алгоритму, например, в процессе авторизации.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
в общем в соседнем ответе перепутана политика смены паролей и смена алгоритмов хэширования.

Смена алгоритмов немного попроще
Заводится новое поле под нормальный хэш, дальше при авторизации смотрим - если оно есть то авторизуем по нему
Если нету - авторизуем по старому хэшу и хэшируем пароль в новый.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы