Haloo! Selamat Datang di Komunitas Private Training Web Development

BCRYPT - Solusi Enkripsi Terkuat Pengganti MD5

Password adalah hal paling vital dalam keamanan sistem. Saking vitalnya, diciptakan berbagai macam algoritma rumit untuk mengenkripsi sebuah password. Dalam mengenkripsi password, dulu kita menggunakan MD5 dan SHA1, namun sekarang algoritma itu sudah dibuang karena ada sudah banyak tool yang dapat membuka hasil enkripsi. Kita bisa lakukan ini sendiri dengan mengunjungi situs https://hashkiller.co.uk, di sana kita bisa pilih menu Decrypter/Cracker dan pilih MD5 atau SHA1 Decrypter.

Untuk mengatasi hal tersebut, saat ini PHP memiliki algoritma enkripsi yang lebih kuat bernama bcrypt. Bcrypt ini merupakan algoritma "one-way hashing" atau pengenkripsian satu arah, yang artinya ketika password sudah dienkrip, maka tidak bisa lagi dikembalikan (dekrip). Silahkan teman-teman kunjungi situs http://php.net/manual/en/function.password-hash.php. Disini kita akan menggunakan fungsi password_hash() untuk mengenkripsi, dan fungsi password_verify() untuk mengecek kecocokan password. Mari kita coba.


Hasilnya adalah kode unik sebanyak 60 karakter. yang akan selalu berubah jika browser kita refresh.

Fungsi password_hash(), memiliki 3 paramater, yang pertama adalah password kita yang akan dienkrip, yang kedua adalah algoritma bcrypt, dan yang ketiga adalah options, options terdiri dari 2 yakni cost dan salt (deprecated in PHP 7.0). Cost adalah jumlah hashing "pengacakan" dengan default 10 (2^10) dan Salt adalah karakter acak tambahan yang akan digabungkan dengan password saat proses hashing yang memungkinkan hasil enkripsi lebih kuat. tetapi seperti yang sudah saya terangkan bahwa penggunaan salt sudah tidak relevan lagi di PHP7 jadi sebaiknya kita tidak usah pakai salt-nya. Seperti contoh diatas, kita hanya pakai 2 parameter saja yaitu password yang akan dienkripsi dan algoritma bcrypt.

Yang menarik dari enkripsi ini adalah, setiap kita refresh browser, maka hasil enkripsi akan selalu berubah-ubah, namun tetap memiliki panjang 60 karakter. Jadi walaupun password nya sama, misalnya "admin123", maka hasil enkripsinya bisa berbeda-beda.

Lalu bagaimana cara mengeceknya?, untuk pengecekan kita bisa menggunakan fungsi password_verify(). Fungsi ini memiliki 2 parameter, yang pertama adalah password yang kita masukan atau yang akan kita cocokan, yang kedua adalah hasil enkripsi dari password.

dan hasilnya adalah

Begitulah teknik enkripsi password dengan bcrypt yang jauh lebih aman daripada MD5. Kenapa lebih aman? intinya kalau kita pakai MD5 maka hasil enkripsinya hanya 1 kali, dan ini dengan sangat mudah dapat digenerate dan disimpan oleh website database MD5 seperti hashkiller. Setelah disimpan oleh mereka, tentu saja bisa sangat mudah dijadikan sebagai database pencarian decrypt MD5. Sedangkan Bcrypt menghasilkan ribuan enkripsi, tentu saja sangat berat bagi website - website hashkiller jika ingin menampung ribuan data hash tersebut hanya untuk satu buah password.

Dalam waktu dekat ini, semua project di area members akan kita upgare menggunakan hasing bcrypt agar lebih aman lagi dari sekarang yang masih memakai MD5

Facebook Comments