Beberapa hal di sini:
-
Anda tidak benar-benar mengenkripsinya, Anda melakukan hashing. Hal yang mudah membingungkan pemula, tetapi hanya ingin menyelesaikannya.
-
Jangan gunakan MD5, itu bukan hash yang sangat aman. Gunakan salah satu varian SHA jika memungkinkan.
-
Jangan hanya meng-hash kata sandi, Anda juga ingin "menggaramkannya". Pada dasarnya ini melibatkan penambahan string acak ke kata sandi sebelum Anda melakukan hash, dan menyimpan string acak itu di suatu tempat di mana Anda dapat mengambilnya nanti (sehingga Anda dapat memvalidasi hash ketika pengguna memasukkan kata sandi mereka). Ini membantu mencegah serangan kamus yang telah dihitung sebelumnya.
Adapun untuk membuat kata sandi, saya pikir Anda berada di jalur yang benar - saya hanya akan membuatnya ketika mereka membuat akun mereka, mengirimkannya melalui email kepada mereka, lalu hash dan simpan hash (dan garam acak) pada catatan pengguna di DB.