Beberapa fungsi enkripsi yang sudah disediakan oleh PHP diantaranya sebagai berikut kecuali

Browse : Home / Pemrograman / PHP / Fungsi Enkripsi Terbaik Untuk Mengamankan Data Di PHP

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?

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:

  1. Enkripsi one-way hashing, adalah enkripsi yang tidak memungkinkan sebuah data yang terenkripsi untuk di decrypt atau diubah ke bentuk awal.
  2. 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:

Beberapa fungsi enkripsi yang sudah disediakan oleh PHP diantaranya sebagai berikut kecuali

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:

Beberapa fungsi enkripsi yang sudah disediakan oleh PHP diantaranya sebagai berikut kecuali

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:

Beberapa fungsi enkripsi yang sudah disediakan oleh PHP diantaranya sebagai berikut kecuali

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!


You're Reading a Free Preview
Pages 4 to 6 are not shown in this preview.

(1)

FUNGSI ENKRIPSI DI PHP

Enkripsi adalah teknik untuk mengamankan data-data tersebut agar isinya tidak diketahui orang lain. Enkripsi biasanya dilakukan terhadap data-data sensitif seperti password. Enkripsi akan menjamin data-data tetap aman meskipun berada di tangan orang lain, karena mereka tidak tahu isi aslinya.

Pada kesempatan ini, kita akan membahas beberapa fungsi enkripsi yang sudah disediakan oleh PHP, diantaranya: password_hash(), crypt(), md5(), hash(), sha1(), dan base64_encode().

Masing-masing fungsi memiliki algoritmanya tersendiri, ada yang kuat ada juga yang lemah.

1. Fungsi password_hash()

Fungsi ini akan menghasilkan sebuah kode hash baru dengan metode one-way hashing. one-way hasing artinya, hasil enkripsinya tidak bisa dikembalikan seperti

semula (decrypt/decode). Contoh:

<?php echo password_hash("PetaniKode", PASSWORD_DEFAULT); ?>

Hasilnya:

$2y$10$7PZGQcOAK6ZJXCAO3UFRC.hpv8hjKsQhy5Y7xBOhLNoFNTuxF3lr2 Fungsi ini sangat disarankan untuk mengenkripsi password, karena sulit didekripsi atau di-crack. Sebelum mengenal fungsi ini, saya biasanya menggunakan fungsi md5(). Namun, fungsi md5() sangat mudah di-crack. Karena itu, sebaiknya menggunakan fungsi password_hash() untuk melindungi password.

Contoh :

Sebelum menyimpan password ke database, sebaiknya dienkripsi terlebih dahulu: <?php

$username = $_POST['username'];

// enkripsi dulu...

$password = password_hash($_POST['username'], PASSWORD_DEFAULT);

(2)

mysqli_query("INSERT INTO user (username, password) VALUE ('$username','$password')");

?>

Fungsi passowrd_hash() ini tidak bisa bekerja sendirian, dia memiliki teman bernama password_verify().

Fungsi password_verify(), biasanya digunakaan saat membuat login untuk membandingkan password yang dikirim user dengan password yang tersimpan pada database.

Contoh : <?php

// ambil data dari form login

$username = $_POST['username']; //<-- ini belum aman dari sql injection :D

// ambil data dari database

$query = mysqli_query("SELECT * FROM user WHERE username='$username'");

$user = mysqli_fetch_assoc($query);

// bandingkan password yang dikirim dari form login dengan password

// yang ada di database

if( password_verify($_POST['password'], $user['password']) ) {

// login berhasil

} else {

// login gagal

}

?>

Tips: bila ingin menyimpan hasil dari fungsi password_hash() di database, pastikan bertipe VARCHAR dengan panjang 255 karakter.

2. Fungsi crypt()

(3)

Contoh :

<?php echo crypt("petanikode", "garam"); ?>

Hasilnya:

gabeK4a28MgJs

Bila diperhatikan, susuan karakter yang dihasilkan mirip seperti karakter yang digunakan pada alamat URL video youtube. Mungkin saja youtube juga menggunakan algoritma yang sama dengan fungsi ini. Pada contoh diatas, kita membarikan dua paramter kepada fungsinya. Parameter pertama adalah teks yang akan dienkripsi. Sementara, parameter kedua adalah salt (garam).

Garam adalah sebuah data acak yang dimasukkan ke dalam fungsi enkripsi. Fungsi ini

juga dapat digunakan untuk mengamankan password, karena sulit di-decode.

3. Fungsi md5()

Fungsi ini akan menghasilkan kode hash sepanjang 32 karakter. <?php echo md5("petanikode"); ?>

Hasilnya:

37ebda33c177743169404948552319df

Bila ditambahkan garam, hasilnya akan berubah. Contoh :

<?php echo md5("petanikode", "g4r4m"); ?>

Hasilnya:

7��3�wt1i@IHU#�

Fungsi ini juga dapat digunakan untuk mengamankan password. Akan tetapi, kalau kita perhatikan kecepatan komputer zaman sekarang. Sangat mungkin untuk melakukan decrypt.

4. Fungsi hash()

(4)

Contoh :

<?php echo hash("md5", "petanikode"); ?>

Hasilnya:

37ebda33c177743169404948552319df

Pada contoh di atas, parameter "md5" adalah nama algortima yang akan digunakan untuk mengenkripsi. Parameter "petanikode" adalah teks yang akan dienkripsi. Bila ingin mengetahui nama-nama algoritma yang bisa digunakan, silahkan coba eksekusi kode ini: <?php

$data = "hello";

foreach (hash_algos() as $v) {

$r = hash($v, $data, false);

printf("%-12s %3d %s\n", $v, strlen($r), $r);

}

?>

Hasilnya:

md2 : 32 a9046c73e00331af68917d3804f70655

md4 : 32 866437cb7a794bce2b727acc0362ee27

md5 : 32 5d41402abc4b2a76b9719d911017c592

sha1 : 40 aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

(5)

ripemd160 : 40 108f07b8382412612c048d07d13f814118445acd

ripemd256 : 64 cc1d2594aece0a064b7aed75a57283d9490fd5705ed3d66bf9a ripemd320 : 80 eb0cf45114c56a8421fbcb33430fa22e0cd607560a88bbe14ce whirlpool : 128 0a25f55d7308eca6b9567a7ed3bd1b46327f0f1ffdc804dd8bb tiger128,3 : 32 a78862336f7ffd2c8a3874f89b1b74f2

tiger160,3 : 40 a78862336f7ffd2c8a3874f89b1b74f2f27bdbca

tiger192,3 : 48 a78862336f7ffd2c8a3874f89b1b74f2f27bdbca39660254 tiger128,4 : 32 1c2a939f230ee5e828f5d0eae5947135

tiger160,4 : 40 1c2a939f230ee5e828f5d0eae5947135741cd0ae

tiger192,4 : 48 1c2a939f230ee5e828f5d0eae5947135741cd0aefeeb2adc snefru : 64 7c5f22b1a92d9470efea37ec6ed00b2357a4ce3c41aa6e28e3b gost : 64 a7eb5d08ddf2363f1ea0317a803fcef81d33863c8b2f9f6d7d1 adler32 : 8 062c0215

crc32 : 8 3d653119 crc32b : 8 3610a686

haval128,3 : 32 85c3e4fac0ba4d85519978fdc3d1d9be

haval160,3 : 40 0e53b29ad41cea507a343cdd8b62106864f6b3fe

haval192,3 : 48 bfaf81218bbb8ee51b600f5088c4b8601558ff56e2de1c4f haval224,3 : 56 92d0e3354be5d525616f217660e0f860b5d472a9cb99d6766be haval256,3 : 64 26718e4fb05595cb8703a672a8ae91eea071cac5e7426173d4c haval128,4 : 32 fe10754e0b31d69d4ece9c7a46e044e5

haval160,4 : 40 b9afd44b015f8afce44e4e02d8b908ed857afbd1

haval192,4 : 48 ae73833a09e84691d0214f360ee5027396f12599e3618118 haval224,4 : 56 e1ad67dc7a5901496b15dab92c2715de4b120af2baf661ecd92 haval256,4 : 64 2d39577df3a6a63168826b2a10f07a65a676f5776a0772e0a87 haval128,5 : 32 d20e920d5be9d9d34855accb501d1987

haval160,5 : 40 dac5e2024bfea142e53d1422b90c9ee2c8187cc6

(6)

5. Fungsi sha1()

Fungsi ini akan menghasilkan kode hash sepanjang 40 karakter. Mirip seperti fungsi md5().

Contoh:

<?php echo sha1("petanikode"); ?>

Hasilnya:

2e71f75dee7cb3e4b8e2e6ef8b8b5e0eab8f78a2

Seperti halnya fungsi md5(), fungsi ini juga akan menciptakan karakter aneh, bila ditambahkan garam.

Contoh :

<?php echo sha1("petanikode", "ga12am"); ?>

Hasilnya:

.q�]�|����� ^��

6. Fungsi base64_encode()

Fungsi ini akan menghasilkan kode hash dari teks yang diinputkan dan bisa dikembalikan ke bentuk semula dengan fungsi base64_decode().

Metode ini disebut two-way hasing.

Contoh:

<?php echo base64_encode("Petani kode"); ?>

Hasilnya:

(7)

Sementara itu, untuk mengembalikan (decrypt) atau decode dapat menggunakan fungsi base64_decode().

Contoh:

<?php echo base64_decode("UGV0YW5pIGtvZGU="); ?>

Hasilnya: Petani kode

Enkripsi dengan base64 tidak cocok digunakan untuk mengenkripsi password, karena sangat mudah di-decode.

Referensi:

 W3Schools.com — PHP crypt() Function

 Php.net — Cryptography Extensions