Mam starą aplikację, która ma hasła użytkownika przechowywane w bazie danych za pomocą skrótu MD5. Chciałbym zastąpić to czymś w rodzinie SHA-2.Jak mogę przekonwertować haszowanie hasła z MD5 na SHA?
Pomyślałem o dwóch możliwych sposobach, aby to osiągnąć, ale obie wydają się raczej niezgrabne.
1) Dodaj boolean pole "flag". Gdy użytkownik po raz pierwszy uwierzytelni się po tym, zamień hash hasła MD5 z hasłem hasła SHA i ustaw flagę. Mogę następnie sprawdzić flagę, aby sprawdzić, czy hash hasła zostało przekonwertowane.
2) Dodaj drugie pole hasła do przechowywania skrótu SHA. Gdy użytkownik po raz pierwszy uwierzytelni się, zaszyfruje hasło za pomocą SHA i zapisze go w nowym polu (prawdopodobnie usunie swój skrót MD5 w tym samym czasie). Następnie mogę sprawdzić, czy pole SHA ma wartość; to w zasadzie staje się moją flagą.
W obu przypadkach uwierzytelnianie MD5 musiałoby pozostać na miejscu przez jakiś czas dla wszystkich użytkowników, którzy logują się nieczęsto. Wszyscy użytkownicy, którzy nie są już aktywni, nigdy nie zostaną przełączeni na SHA.
Czy jest lepszy sposób to zrobić?
Twoje dwa rozwiązania wyglądają mi dobrze. – wtaniguchi
I podnoszę odpowiedź Neda, on ma dobry punkt. – wtaniguchi
Jeśli chodzi o użytkowników, którzy nigdy nie zostali przełączeni - rozważałbym, gdy pewien procent osób zostanie przełączony i upłynie wystarczająco dużo czasu, aby pozbyć się skrótów MD5. Osoby, które nie zalogowały się w tym czasie, będą musiały zresetować swoje hasła, gdy i kiedykolwiek będą się logować. To, czy akceptacja (i kiedy) jest akceptowalna, jest decyzją biznesową. –