У меня есть приложение PHP с довольно приличной пользовательской базой. К сожалению, все эти годы он использовал sha1($password . $salt), и я действительно хочу отказаться от этого в пользу bcrypt. Я нашел несколько хороших способов получить хэш Blowfish, но я все еще не уверен в подходе к преобразованию, который мне следует использовать. Вот мои варианты:
Опция 1
Каждый раз, когда пользователь входит в систему, я проверяю, начинается ли хэш с $2. Если нет, я предполагаю, что это sha1, возьмите пароль, введенный пользователем, получите для него хэш bcrypt и замените старый хэш в базе данных.
Вариант 2
Я заменяю свой класс авторизации, чтобы сделать это:
$hash = password_hash("rasmuslerdorf", sha1($password . $salt));
Таким образом, преобразование происходит быстрее.
Но, честно говоря, мне не очень нравится ни один из вариантов. Оба предполагают, что я все еще храню устаревшую проверку в кодовой базе, от которой я хочу избавиться.
Любые предложения, которые из двух вышеперечисленных лучше с точки зрения стандартов кодирования? Или у кого-то есть лучшее решение?