Kilka rzeczy tutaj:
-
Tak naprawdę to nie szyfrujesz, tylko haszujesz. Łatwa rzecz dla początkujących do pomylenia, ale po prostu chciałem to usunąć.
-
Nie używaj MD5, po prostu nie jest to bardzo bezpieczny skrót. Jeśli to możliwe, użyj jednego z wariantów SHA.
-
Nie tylko haszuj hasło, będziesz też chciał je „solić”. Zasadniczo obejmuje to dodanie losowego ciągu do hasła przed jego zaszyfrowaniem i przechowywanie tego losowego ciągu w miejscu, w którym można go później pobrać (aby można było zweryfikować skrót, gdy użytkownik wprowadzi swoje hasło). Pomaga to zapobiegać atakom wstępnie obliczonych słowników.
Jeśli chodzi o generowanie hasła, myślę, że jesteś na dobrej drodze - po prostu wygenerowałbym je, gdy założyli swoje konto, wyślij do nich e-mailem, a następnie zahaszuj i przechowuj zahaszowany (i losową sól) w rekordzie użytkownika w DB.