У меня есть старое приложение с паролями пользователей, хранящимися в базе данных с хешем MD5. Я хотел бы заменить это чем-то в семье SHA-2.
Я подумал о двух возможных способах достижения этого, но оба они кажутся довольно неуклюжими.
1) Добавить логическое поле "флаг". В первый раз, когда пользователь аутентифицируется после этого, замените хэш пароля MD5 на хэш пароля SHA и установите флаг. Затем я могу проверить флаг, чтобы узнать, был ли преобразован хэш.
2) Добавьте второе поле пароля для хранения хэша SHA. В первый раз, когда пользователь аутентифицируется после этого, хеширует пароль с SHA и сохраняет его в новом поле (возможно, одновременно удаляет хэш MD5). Затем я могу проверить, имеет ли поле SHA значение; это по сути становится моим флагом.
В любом случае аутентификация MD5 должна оставаться на месте в течение некоторого времени для любых пользователей, которые редко регистрируются. И все пользователи, которые больше неактивны, никогда не будут переключаться на SHA.
Есть ли лучший способ сделать это?