Няколко неща тук:
-
Вие всъщност не го криптирате, вие го хеширате. Лесно нещо за начинаещи да объркат, но просто исках да го махна от пътя.
-
Не използвайте MD5, просто не е много сигурен хеш. Използвайте един от вариантите на SHA вместо това, ако е възможно.
-
Не просто хеширайте паролата, вие също ще искате да я „посолите“. По принцип това включва добавяне на произволен низ към паролата, преди да я хеширате, и съхраняване на този произволен низ някъде, където можете да го извлечете по-късно (така че да можете да потвърдите хеша, когато потребителят въведе паролата си). Това помага за предотвратяване на атаки срещу предварително изчислени речникови атаки.
Що се отнася до генерирането на паролата, мисля, че сте на прав път - просто бих я генерирал, когато създадат акаунта си, бих им я изпратил по имейл, след това бих я хешировал и съхранил хешираната (и произволна сол) в потребителския запис в DB.