Cara menggunakan password md5 php

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.

Apa itu MD5 Password?

Enkripsi MD5 merupakan singkatan dari Message-Digest algortihm 5, adalah fungsi hash (prosedur terdefinisi atau fungsi matematika yang mengubah variabel dari suatu data yang berukuran besar menjadi lebih sederhana) kriptografik yang digunakan secara luas dengan hash value 128-bit.

Apa kegunaan dari MD5?

Pada standart Internet (RFC 1321), MD5 telah dimanfaatkan secara bermacam-macam pada aplikasi keamanan, dan MD5 juga umum digunakan untuk melakukan pengujian integritas sebuah berkas. MD5 di desain oleh Ronald Rivest pada tahun 1991 untuk menggantikan hash function sebelumnya, MD4.

Apakah MD5 bisa di decrypt?

Cara Decrypt Password MD5 di PHP Algoritma kriptografi MD5 tidak reversibel yaitu Kami tidak dapat mendekripsi nilai hash yang dibuat oleh MD5 untuk mendapatkan input kembali ke nilai aslinya. Jadi tidak ada cara untuk mendekripsi password MD5.