menggunakan password hash dan password verify

Selamat datang di warung belajar, melanjutkan pembahasan dari seri tutorial belajar PHP, Pada part 47 kita akan membahas mengenai fungsi password_hash dan password_verify di PHP.

 

Mengenal Fungsi Password_hash di PHP

Password_hash adalah salah satu fungsi yang dimiliki PHP untuk melakukan hashing password yang menggunakan algoritma dengan metode satu arah atau biasanya disebut dengan istilah one-way hashing, Fungsi ini terdapat pada PHP Versi 5.5 ke atas.

Istilah hash adalah sebuah mekanisme untuk memetakan suatu data yang diinputkan berupa text (Plain Text) menjadi output string (checksum) dengan kode acak yang memiliki panjang karakter yang tetap.

Dengan menggunakan fungsi password_hash nantinya hasil data yang dihasilkan akan dihashing satu arah, sehingga data yang sudah dihash tidak akan bisa dikembalikan menjadi text aslinya.

Kenapa warung belajar membahas mengenai fungsi password_hash untuk teknik hashing, bukan menggunakan metode MD5 atau SHA1, hal tersebut dikarenakan banyak sekali web diluar sana yang menyedikan tools untuk melakukan decrypt hasil encrypt dari MD5 ataupun SHA1 sehingga menurut kita ada baiknya anda menghindari penggunaan password dengan encrypt MD5 ataupun SHA1

 

Baik kita kembali ke dalam topik pembahasan dari password_hash, sebagai contoh kita akan membuat hash dari sebuah sebuah password menggunakan fungsi password_hash(), perhatikan skrip dibawah ini :

 

Jika dijalankan maka akan menampilkan text seperti berikut :

$2y$10$JRQHPac0c6/yss6gTwltJ.FuR7HV49X50tdJioutxj8l5QLJo5TR.

 

Keterangan :

  1. Hasil hash akan berganti ganti, jadi hasilnya pada punya teman – teman ada kemungkinan berbeda.
  2. Itu merupakan hasil password_hash dari string 12345678
  3. Baris 5 kita membuat variabel $passwordku dengan nilai “12345678” ini adalah bentuk plain text dari password yang akan kita hash nantinya
  4. Baris 6 kita menggunakan fungsi password_hash, pada fungsi ini memiliki 3 argumen antara lain :
    • Parameter pertama adalah text yang akan kita hash, dalam contoh ini adalah angka 12345678
    • Parameter kedua adalah algoritma yang akan digunakan untuk melakukan hash, PASSWORD_DEFAULT adalah algoritma bawaan untuk melakukan hash, algoritma tersebut yaitu menggunakan BCRYPT dimana akan menghasilkan output sepanjang 60 karakter, untuk anda yang akan menyimpan hasil string hash kedalam database, disarankan untuk membuat field data pada database menggunakan karakter sepanjang 255 karakter.
    • Parameter ketiga dalam contoh ini adalah variabel $options merupakan variabel array untuk menampung nilai const, nama variabelnya bisa diganti sesuai keinginan anda, tidak harus $options, untuk argumen ketiga ini bersifat optional, anda bisa melewatkan argumen ketiga ini.
  5. Bagian cost sendiri adalah parameter yang digunakan untuk menentukan berapa banyak hash dilakukan, dalam contoh ini karena kita menggunakan BCRYPT (PASSWORD_DEFAULT), jika nilai cost adalah 10 maka proses hashing akan dilakukan sebanyak 2^10 atau 1024 kali.
  6. Baris 7 kita menampilkan hasil dari hash password, sehingga tertulis karakter, $2y$10$JRQHPac0c6/yss6gTwltJ.FuR7HV49X50tdJioutxj8l5QLJo5TR.

Bagimana mudah bukan untuk melakukan hash menggunakan fitur password_hash(), berikutnya kita akan belajar menggunakan fungsi password_verify() untuk melakukan pencocokan hash dengan string aslinya.

 

Mengenal fungsi password_verify

Fungsi password_verify adalah fungsi bawaan PHP yang digunakan untuk melakukan verifikasi (mencocokan) data yang telah terhash menggunakan fungsi password_hash().

Sebagai contoh perhatikan skrip dibawah ini :

 

Keterangan :

  1. Jika skrip tersebut dijalankan maka akan menampilkan tulisan “Password Valid”
  2. Baris 2 merupakan variabel $password_hash yang berisi password yang sudah kita hash ditutorial sebelumnya.
  3. Baris 3 merupakan variabel $password yang berisi string “12345678”, seperti yang kita ketahui ditutorial sebelumnya kita telah melakukan hash terhadap string “12345678” menjadi karakter yang disimpan pada variabel $password_hash.
  4. Baris 4 merupakan kita menggunakan perintah password_verify untuk melakukan pengecekan antara password yang telah dihash dan password asal (plain text) apakah sesuai atau tidak.
  5. Fungsi password_verify ini memiliki 2 parameter antara lain :
    • parameter pertama adalah password yang masih berupa plain text, karena itu kita tuliskan variabel $password
    • parameter kedua adalah password hasil hash, karena itu kita tuliskan variabel $password_hash.
  6. Pada baris 4 kita menggunakan perintah if karena nantinya kita melakukan pengecekan apakah passwordnya sesuai antara password hash dan password yang masih berbentuk plain text, kita gunakan if karena jika password sesuai akan mengembalikan nilai TRUE yang akan menampilkan tulisan “Password Valid” (Baris 6) dan jika password tidak sesuai akan mengembalikan nilai FALSE yang akan menampilkan tulisan “Password Tidak Valid” (Baris 10).

Untuk implementasi dari penggunaan password_hash dan password_verifiy ini nantinya akan kita bahas lebih lanjut ditutorial selanjutnya mengenai membuat fitur login di PHP dan MySQL.

Baik sekian dulu pembahasan tutorial kali ini, jika ada yang ingin didiskusikan silahkan di kolom komentar, sampai jumpa di tutorial selanjutnya.

Leave a Comment

Your email address will not be published.