Berikut adalah beberapa cara untuk kita dapat mengenkripsi suatu string atau password dengan php. Umumnya enkripsi digunakan untuk menyimpan string password ke database. Ini juga berlaku pada bahasa pemrograman lainnya. Tidak hanya php saja. Namun kali ini saya akan share bagaimana mengenkripsi password dengan php
Mengapa Butuh Enkripsi Password ??
Baik, sebelum melanjutkan ada baiknya saya menjelaskan mengapa kita membutuhkan enkripsi password. Misal, pada suatu sistem database yang kita buat. Kita menerapkan pengecekan password ke database agar kita dapat login. Bayangkan jika orang tidak bertanggung jawab dapat mengakses database kita, kemudian data user dan password tidak di enkripsi. Maka orang lain dengan mudahnya dapat login ke sistem informasi yang kita buat. Contoh : Kita memiliki tabel user sebagai berikut :
username | password |
admin | admin |
andi | 12345 |
Bandingkan dengan tabel berikut :
username | password |
admin | sdal30sd30923mdf023kdf0 |
andi | 4023403323dfkj03kd23049 |
Tentu akan lebih aman menggunakan enkripsi bukan ?
Nah, kali ini saya akan berbagi beberapa tips untuk menambahkan enkripsi pada suatu teks php yang umumnya digunakan sebagai enkripsi password yang disimpan ke database.
1. Enkripsi Password PHP dengan MD5
$password = md5('admin'); //contoh password: admin //nilai outputnya adalah 21232f297a57a5a743894a0e4a801fc3
Jika kita menyimpan variabel $password ke database, maka akan tersimpan karakter panjang output yang ada pada kode keterangan di atas.
Pada umumnya enkripsi ini selalu digunakan bagi programmer pemula maupun medium dalam membuat sistem informasi untuk mengamankan password yang ada pada sistem mereka. Namun karena ini sudah sering digunakan terdapat beberapa metode lain yang lebih secure.
2. Enkripsi Password PHP dengan Password Hash
echo password_hash("admin", PASSWORD_DEFAULT);
maka akan tampil output :
$2y$10$xpY0cWt4LLxpnIoveaK6vuWeKUZ4f2cp0PtUbgm1itoydQoJFmvDO
Anda dapat memasukkan perintah ke dalam variable seperti ini :
$password = password_hash("admin", PASSWORD_DEFAULT); echo $password;
Nah, Selanjutnya bagaimana mengecek kebenaran suatu password akan memberikan hasil true pada proses login ?
Kita memerlukan yang namanya password_verify(). Contoh :
<?php // Anggaplah karakter di bawah adalah hasil select dari database $enkripsihash = '$2y$10$xpY0cWt4LLxpnIoveaK6vuWeKUZ4f2cp0PtUbgm1itoydQoJFmvDO'; $passwordlogin = "admin"; //ini adalah password yang diinputkan user pada saat login if (password_verify($passwordlogin, $enkripsihash)) { //memverifikasi apakah enkripsi password login sesuai echo 'Berhasil Login'; //Password Benar } else { echo 'Tidak Berhasil Login'; //Password Salah } ?>
password_hash dan password_verify umum digunakan bersamaan.
3. Enkripsi Password PHP dengan Sha1
Sha1 juga merupakan fungsi enkripsi pada php. Contoh nya adalah sebagai berikut :
<?php $pswd = "admin"; echo $pswd."<br><br>"; $encrypt = sha1($pswd); echo $encrypt; ?>
4. Enkripsi Password PHP dengan Kunci Rahasia (Secret Key)
<?php class Encryption { var $skey = "KeyRahasiaSaya33"; // Ubah Sesuai Keinginan (Jumlah Minimal 16 Karakter) public function safe_b64encode($string) { $data = base64_encode($string); $data = str_replace(array('+','/','='),array('-','_',''),$data); return $data; } public function safe_b64decode($string) { $data = str_replace(array('-','_'),array('+','/'),$string); $mod4 = strlen($data) % 4; if ($mod4) { $data .= substr('====', $mod4); } return base64_decode($data); } public function encode($value){ if(!$value){return false;} $text = $value; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv); return trim($this->safe_b64encode($crypttext)); } public function decode($value){ if(!$value){return false;} $crypttext = $this->safe_b64decode($value); $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv); return trim($decrypttext); } } $str = "Ini Password Saya"; $converter = new Encryption; $encoded = $converter->encode($str); $decoded = $converter->decode($encoded); echo "$encoded<br><br>"; echo "$decoded"; ?>
Ini adalah salah satu enkripsi yang paling aman untuk password. karena menggunakan kunci rahasia (secret key) yang dalam hal ini hanya kita lah yang mengetahuinya.
Nah, demikianlah beberapa contoh code untuk menerapkan enkripsi pada password php atau sistem informasi php yang kita buat. Tentunya kita sangat menginginkan sistem informasi atau project php yang sedang kita kembangkan itu aman dari pihak yang ingin membobol atau pihak yang hanya sekedar iseng untuk merusak kerja sistem yang telah susah payah kita buat.
Terimakasih, Semoga bermanfaat.