Cara Enkripsi Password dengan PHP (Termasuk Pakai Secret Key!)
Cara Enkripsi Password dengan PHP (Termasuk Pakai Secret Key!)
Keamanan adalah hal penting dalam sistem aplikasi, apalagi kalau berhubungan dengan data sensitif seperti password. Jangan sampai password disimpan dalam bentuk asli (plaintext), karena bisa dibaca siapa saja! Di artikel ini, kita akan belajar 3 teknik enkripsi password di PHP, lengkap dengan contoh kode: MD5, password_hash, dan openssl_encrypt. Yuk, langsung praktik!
---Apa Itu Enkripsi?
Enkripsi adalah proses mengacak data asli menjadi bentuk yang tidak bisa langsung dibaca. Misalnya, dari kata “admin” menjadi kumpulan karakter acak seperti 21232f297a...
. Untuk mengembalikannya (dalam beberapa metode), perlu proses dekripsi.
Kenapa Harus Enkripsi Password?
Kalau password disimpan tanpa enkripsi, siapa pun yang punya akses database bisa langsung tahu password semua user. Dengan enkripsi, password akan disimpan dalam bentuk aman dan (tergantung metode) sulit atau bahkan mustahil dibalik.
Contoh Perbandingan
Username | Password Tanpa Enkripsi |
---|---|
admin | admin |
Username | Password dengan MD5 |
---|---|
admin | 21232f297a57a5a743894a0e4a801fc3 |
1. Enkripsi Password dengan MD5
Metode ini paling sering digunakan oleh pemula karena simpel. Tapi perlu diingat, MD5 sudah tidak aman untuk digunakan di sistem modern karena mudah dipecahkan.
<?php
$password = md5('admin');
echo $password; // output: 21232f297a57a5a743894a0e4a801fc3
?>
2. Enkripsi Password dengan password_hash()
Fungsi ini adalah metode hashing satu arah yang jauh lebih aman dibanding MD5. Cocok untuk login modern karena hasil hash akan berbeda walau input sama.
<?php
$options = ['cost' => 10];
$password = password_hash('admin', PASSWORD_DEFAULT, $options);
echo $password;
// contoh output: $2y$10$AcnRXWegq9PhoUkC6Wf2xOg/...
?>
password_hash
: fungsi hashing bawaan PHP (>= 5.5).PASSWORD_DEFAULT
: algoritma BCRYPT.cost
: tingkat pengulangan hashing (semakin besar, semakin berat proses).
3. Enkripsi Dua Arah dengan openssl_encrypt()
Kalau kamu butuh enkripsi dua arah (yang bisa di-dekripsi kembali), gunakan openssl_encrypt()
. Tapi harus hati-hati dalam menyimpan secret key dan IV-nya.
Contoh Enkripsi:
<?php
$data = 'admin';
$method = 'AES-128-CTR';
$key = 'Sipinter123@#@';
$option = 0;
$iv = '1251632135716362'; // Harus 16 byte untuk AES-128-CTR
$encrypted = openssl_encrypt($data, $method, $key, $option, $iv);
echo $encrypted; // contoh hasil: Ck8gNF0=
?>
Contoh Dekripsi:
<?php
$data = 'Ck8gNF0=';
$method = 'AES-128-CTR';
$key = 'Sipinter123@#@';
$option = 0;
$iv = '1251632135716362';
$decrypted = openssl_decrypt($data, $method, $key, $option, $iv);
echo $decrypted; // hasil: admin
?>
$key
= Kunci rahasia (jaga baik-baik, jangan di-publish).$iv
= Inisialisasi vektor, harus 16 karakter untuk AES-128.openssl_encrypt
= mengenkripsi data.openssl_decrypt
= mendekripsi kembali ke data asli.
Kesimpulan
Sekarang kamu tahu bahwa password yang aman itu wajib dienkripsi. Untuk login sederhana, bisa gunakan password_hash()
. Tapi kalau butuh data yang bisa dibuka kembali (misal untuk OTP atau token rahasia), bisa pakai openssl_encrypt()
. Hindari MD5 di sistem yang butuh keamanan tinggi, karena sudah tidak aman. Semoga tutorial ini bermanfaat ya!
Jangan lupa share artikel ini ke teman-teman coding kamu. Dan kalau butuh tutorial implementasi ke sistem login, tinggal komentar aja~
Posting Komentar untuk "Cara Enkripsi Password dengan PHP (Termasuk Pakai Secret Key!)"
Posting Komentar