Hai Sipinter! Berjumpa lagi di sesi Tutorial Pemrograman PHP dimana disini kita akan membahas semua hal mengenai membuat web dinamis menggunakan PHP.
Kali ini kita akan membahas beberapa fungsi enkripsi data yang ada di PHP, dimana hal ini berfungsi untuk mengamankan data penting yang ada di program web yang kita buat.
Daftar pembahasan pada postingan kali ini:
- Apa itu Encrpt (enkripsi), Decrpt (dekripsi) dan Kode Hash?
- Jenis-Jenis Enkripsi
- Daftar Fungsi Enkripsi Teraman di PHP
Apa itu Encrpt (enkripsi), Decrpt (dekripsi) dan Kode Hash?
Enkripsi sendiri merupakan proses untuk mengamankan data dengan merubah sebuah data menjadi bentuk yang tidak bisa dibaca atau dipahami.
Enkripsi membuat data penting yang disimpan dalam web kita akan sulit untuk dibaca dan dipahami walaupun data tersebut dapat diakses oleh orang yang tidak bertanggung jawab.
Karena data yang telah dienkripsi akan berubah bentuk menjadi kode hash yang sangat sulit untuk dipahami tanpa memiliki pengetahun tertentu.
Kode hash berupa campuran angka dan huruf yang sangat acak.
Pasti kalian pernah berpikir kalau kalian lupa password kenapa admin tidak memberi tahu kita apa password lamanya tapi malah meminta kita untuk menggantinya ke password baru?
Jawabanya adalah bahkan admin sebuah aplikasi pun tidak bisa membaca dan memahami data password kalian yang sudah dienkripsi, karena itu pilihan terbaik adalah menggantinya dengan password baru.
Jika data password terenkripsi menjadi kode yang tidak dapat dibaca kenapa kita bisa login?
Karena adanya decrypt (dekripsi) yang berfungsi untuk membaca data yang terenkripsi atau merubah data terenkripsi ke bentuk awal.
Data yang dienkripsi akan berubah menjadi kode hash dimana kode ini sebenarnya mewakili data sebenarnya sehingga untuk membaca kode hash hasil enkripsi kita perlu memiliki kunci yang berupa metode untuk mendekripsi nya.
Kunjungi Juga: Menggabungkan Beberapa File PHP dengan Include & Require
Jenis-Jenis Enkripsi
Enkripsi dibedakan menjadi 2 yaitu:
- Enkripsi one-way hashing, adalah enkripsi yang tidak memungkinkan sebuah data yang terenkripsi untuk di decrypt atau diubah ke bentuk awal.
- Enkripsi two-way hashing adalah enkripsi yang memungkinkan data yang terenkripsi untuk di decrypt atau diubah ke bentuk awal.
Daftar Fungsi Enkripsi Teraman di PHP
Berikut merupakan beberapa fungsi enkripsi di PHP dengan keamanan yang tinggi untuk sekarang:
1. Fungsi openssl_encrypt()
Enkripsi dengan openssl_encrypt()
merupakan enkripsi two-way hashing dimana data yang telah terenkripsi dapat kita kembalikan ke bentuk awal.
openssl merupakan jenis enkripsi two-way hashing paling aman karena untuk mengembalikannya ke bentuk awal atau decrypt nya kita perlu mengetahui key yang digunakan ketika mengenkripsi data tersebut.
Enkripsi ini sangat cocok digunakan untuk mengenkripsi pesan atau text yang penting, dimana kita hanya ingin yang mengetahui key saja yang dapat membaca pesan atau text tersebut.
Aturan penulisan openssl_encrypt()
adalah seperti berikut:
openssl_decrypt( string $data, string $method, string $key, int $option=0, string $iv, string $tag, string $aad);
Penjelasan parameter:
- $data = String yang akan di enkripsi.
- $method = Cipher method. untuk melihat cipher method yang tersedia gunakan fungsi openssl_get_cipher_methods().
- $key = kata kunci yang digunakan untuk mengenkripsi data.
- $option = disjungsi dari flag OPENSSL_RAW_DATA dan OPENSSL_ZERO_PADDING.
- $iv = berisi vektor inisialisasi yang tidak NULL.
- $tag = berisi tag otentikasi menggunakan mode cipher.
- $add = berisi data otentikasi tambahan.
berikut merupakan contoh cara menggunakan fungsi enkripsi openssl dan cara decrptnya:
<?php
$data="Enkripsi dengan openssl_encrypt() merupakan enkripsi two-way hashing dimana data yang telah terenkripsi dapat kita kembalikan ke bentuk awal.";
echo "Data sebelum dienkripsi = $data <br/><br/>";
$method="AES-128-CTR";
$key ="Sipinter123@#@";
$option=0;
//asal saja hehehe
//namun pajangnya sesuiai method cipher
//cek dengan openssl_cipher_iv_length($method);
$iv="1251632135716362";
$dataTerenkripsi=openssl_encrypt($data, $method, $key, $option, $iv);
echo "Data setelah dienkripsi = $dataTerenkripsi<br/><br/>";
$dataDecrypt=openssl_decrypt($dataTerenkripsi, $method, $key, $option, $iv);
echo "Data terenkripsi ketika di decrypt = $dataDecrypt";
?>
Dan berikut merupakan hasilnya dimana data berhasil di enkripsi dan di decrypt:
2. Fungsi password_hash()
Fungsi password_hash()
merupakan salah satu enkripsi one-two hashing dimana data yang sudah dienkripsi tidak dapat dikembalikan ke bentuk awal atau di decrypt.
fungsi ini adalah fungsi paling aman, yang bagus digunakan untuk mengenkripsi data password.
Karena hasil kode hash dari enkripsi ini akan berbeda walaupun data awalnya sama, contoh mengenkripsi kata ”Sipinter123” berulang kali tapi hasilnya bisa dilihat pada gambar:
Hal ini akan mengamankan data kita dari kemungkinan seseorang ingin mengetahui data kita yang terenkripsi dengan menggunakan kamus decrypt, sehingga akan sangat aman.
Walaupun tidak bisa di decrypt tapi kita bisa mencocokan suatu data dengan data terenkripsi tersebut apakah memiliki nilai yang sama dengan fungsi password_verify()
.
Contoh cara menggunakan enkripsi password_hash()
dan password_verify()
:
<?php
$password=password_hash("Sipinter123", PASSWORD_DEFAULT);
if (password_verify("sip123", $password)) {
echo "Login Berhasil password=sip123<br/>";
} else {
echo "Login Gagal Dengan password=sip123<br/>";
}
if (password_verify("Sipinter123", $password)) {
echo "Login Berhasil password=Sipinter123<br/>";
} else {
echo "Login Gagal Dengan password=Sipinter123<br/>";
}
?>
Dan hasilnya adalah seperti di bawah:
Sekian postingan kali ini semoga informasi diatas bermanfaat untuk kita dan jika ada kesalahan admin minta maaf yang sebesar-besarnya.
“Nikmati sebuah proses mulai dari belajar, mengembangkan sampai kita bisa berbagi untuk orang lain”
Jika memiliki masukan atau pertanyaan tinggalkan di kolom komentar ya!
Bantu kami dengan share postingan ini :D!
sangat membantu untuk pengembangan aplikasi saya
tidak sia-sia berarti saya membuat artikelnya gan hehehehe