Pár věcí zde:
-
Ve skutečnosti to nešifrujete, ale hashujete. Pro nováčky je snadné zmást, ale chtěl jsem tomu zabránit.
-
Nepoužívejte MD5, prostě to není příliš bezpečný hash. Pokud je to možné, použijte raději jednu z variant SHA.
-
Heslo nezahašujte jen tak, budete ho chtít „osolit“. V zásadě to zahrnuje přidání náhodného řetězce k heslu, než jej zahašujete, a uložení tohoto náhodného řetězce někam, kde jej můžete později načíst (abyste mohli hash ověřit, když uživatel zadá své heslo). To pomáhá předcházet útokům na předem vypočítaný slovník.
Pokud jde o generování hesla, myslím, že jste na správné cestě - prostě bych ho vygeneroval, když si vytvoří svůj účet, poslal bych mu ho e-mailem, pak ho zahašoval a uložil hash (a náhodnou sůl) do záznamu uživatele v DB.