Nah… biasanya, struktur code untuk mengenkripsi password dengan md5 dan menyimpannya ke dalam database (pada registrasi user baru) adalah sebagai berikut:
1 2 3 4 5 6 7 8 9 10 11 |
<?php // input username baru // input password asli baru ($passAsli) $passEnkrip = md5($passAsli); /* procedure simpan data username dan password hasil md5() ke db */ ?> |
Sedangkan struktur code untuk loginnya adalah
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php // input login username // input login password asli ($passAsli) if (md5($passAsli) == $passEnkrip) { // login sukses // procedure jika login sukses } else { // login gagal // procedure jika login gagal } ?> |
Beberapa periode yang lalu, mungkin penggunaan struktur seperti di atas sudah dirasa aman. Namun saat ini tidak aman lagi, karena sudah banyak tool untuk mendekripsi hasil enkripsi md5(). Salah satu toolnya seperti yang ada di situs http://md5.rednoize.com. Apa akibatnya jika password ini didekripsi? wah bahaya… bisa-bisa password aslinya ketahuan.
jadi…. gimana donk? apakah md5() tidak usah digunakan lagi? Tidak usah khawatir, kita tetap bisa menggunakan md5() namun perlu sedikit kreatif. Maksudnya adalah bahwa kita perlu mengkombinasikan penggunaan md5() dengan pengacak, misalnya kita gunakan md5() berulangkali, atau menggabungkan password asli dengan suatu string tertentu lalu dienkripsi.
Berikut ini contoh struktur code untuk menyimpan password terenkripsi menggunakan pengacak
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php // input username baru // input password baru ($passAsli) $pengacak = "AJWKXLAJSCLWLW"; $passEnkrip = md5($pengacak . md5($passAsli) . $pengacak ); /* procedure simpan data username dan password $passEnkrip ke db */ ?> |
Sedangkan berikut ini adalah struktur untuk loginnya
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php // input login username // input login password asli ($passAsli) $pengacak = "AJWKXLAJSCLWLW"; if (md5($pengacak . md5($passAsli) . $pengacak) == $passEnkrip) { // login sukses // procedure jika login sukses } else { // login gagal // procedure jika login gagal } ?> |
Anda dapat mengubah isi pengacak atau mungkin mengubah format enkripsinya menjadi model lain, misalnya menggabungkan 3 atau lebih md5() dalam enkripsi. Dalam hal ini, hanya kita yang tahu format enkripsi atau pengacaknya. Intinya adalah jangan mengenkripsi password menggunakan md5() secara langsung, karena hal ini rawan untuk dihack pada saat ini.


