Een paar dingen hier:
-
Je versleutelt het niet echt, je hasht het. Makkelijk voor nieuwelingen om te verwarren, maar ik wilde dat gewoon uit de weg ruimen.
-
Gebruik geen MD5, het is gewoon geen erg veilige hash. Gebruik in plaats daarvan indien mogelijk een van de SHA-varianten.
-
Hash niet alleen het wachtwoord, u wilt het ook "zouten". Dit houdt in feite in dat u een willekeurige reeks aan het wachtwoord toevoegt voordat u het hasht, en die willekeurige reeks ergens opslaat waar u het later kunt ophalen (zodat u de hash kunt valideren wanneer de gebruiker zijn wachtwoord invoert). Dit helpt tegen vooraf berekende woordenboekaanvallen.
Wat betreft het genereren van het wachtwoord, denk ik dat je op de goede weg bent - ik zou het gewoon genereren wanneer ze hun account maken, het naar hen e-mailen, het vervolgens hashen en de hash (en een willekeurig zout) op het gebruikersrecord opslaan in de DB.