Bukan berarti Anda tidak boleh menggunakan MD5, tetapi Anda tidak boleh menggunakan hanya MD5, karena ini membuat Anda rentan terhadap serangan tabel pelangi (tabel pelangi adalah tabel nilai hash yang telah dihitung sebelumnya - jika kata sandi Anda bahkan sangat umum atau sederhana, penyerang hanya perlu mencari hash dan dia mengetahui kata sandi plaintext Anda. )
Paling tidak Anda harus menambahkan garam ke setiap kata sandi sehingga tabel pelangi yang ada tidak berguna, memaksa penyerang untuk membuat tabel pelangi baru hanya untuk basis data kata sandi Anda.
Lebih baik lagi adalah menggunakan garam yang berbeda untuk setiap kata sandi dalam database Anda, katakanlah nama pengguna yang terkait dengannya, sehingga penyerang bahkan tidak dapat membuat tabel pelangi untuk seluruh database Anda dan harus memecahkan setiap entri secara terpisah.
MD5 juga merupakan algoritma yang sangat cepat. Kecepatan adalah musuh dalam hal cracking - semakin lama waktu yang dibutuhkan untuk menghasilkan hash, semakin lama waktu yang dibutuhkan untuk setiap upaya yang dilakukan peretas. Sesuatu yang sederhana seperti hashing plaintext 100 kali dengan garam tambahan baru setiap kali hampir tidak terlihat (jika sama sekali) bagi pengguna yang masuk ke situs Anda, tetapi itu akan meningkatkan waktu yang diperlukan untuk memaksa kata sandi dengan cara yang sama 100 kali.
Jauh, jauh lebih detail di sini:http://www.codinghorror.com/blog/ arsip/000953.html