Pemrograman

Bahasa

Framework

Peralatan

Info

6 Fungsi enkripsi di PHP untuk kriptografi

– 20 September 2015
Enkripsi merupakan proses mengubah teks polos (plain text) menjadi bentuk lain (kode sandi atau hash). Enkripsi bertujuan untuk melindungi informasi rahasia seperti kata sandi atau password. PHP menyediakan beberapa fungsi untuk melakukan enkripsi, diantaranya: password_hash(), crypt(), md5(), hash(), sha1(), dan base64_encode().

1. Fungsi password_hash()

Fungsi ini akan menghasilkan sebuah kode sandi (hash) baru dengan algoritma one-way hashing. Contoh penggunaan:
<?php echo password_hash("PetaniKode", PASSWORD_DEFAULT); ?>
akan menghasilkan kode acak yang berubah-ubah:
$2y$10$7PZGQcOAK6ZJXCAO3UFRC.hpv8hjKsQhy5Y7xBOhLNoFNTuxF3lr2
Sepertinya fungsi ini sangat cocok untuk mengenkripsi password. Karena kode yang dihasilkan selalu berubah. Oleh sebab itu, fungsi ini juga dibantu oleh fungsi password_verify() untuk memverifikasi kode sandi. Contoh penerapan:


2. Fungsi crypt()

Fungsi ini menghasilkan kode sandi yang lebih pendek daripada fungsi password_hash(). Contoh:
<?php echo crypt("petanikode", "garam"); ?>
akan menghasilkan:
gabeK4a28MgJs
Bila diperhatikan, susuan karakter yang dihasilkan mirip seperti karakter yang digunakan di alamat URL video youtube. Mungkin saja youtube juga menggunakan algoritma yang sama dengan fungsi ini.

Pada contoh diatas, fungsi diberikan dua parameter. Parameter pertama adalah teks yang akan dienkripsi. Sementara, parameter kedua adalah salt (garam). Garam adalah sebuah data acak yang dimasukkan ke dalam fungsi enkripsi.

3. Fungsi md5()

Fungsi ini menghasilkan kode sandi sepanjang 32 karakter. Contoh:
<?php echo md5("petanikode"); ?>
akan menghasilkan:
37ebda33c177743169404948552319df
Bila ditambahkan garam, hasilnya akan berubah. Contoh:
<?php echo md5("petanikode", "g4r4m"); ?>
akan menghasilkan:
7��3�wt1i@IHU#

4. Fungsi hash()

Fungsi ini akan menciptkan sebuah kode sandi dengan algoritma tertentu. Contoh:
<?php echo hash("md5", "petanikode"); ?>
akan menghasilkan:
37ebda33c177743169404948552319df
Pada contoh di atas, parameter "md5" adalah nama algortima yang digunakan. Sementara, "petanikode" adalah teks yang akan dienkripsi.

Bila ingin mengetahui nama-nama algoritma yang bisa dipakai fungsi ini. Silahkan coba contoh kode yang diberikan dari web dokumentasinya:
<?php
$data = "hello";

foreach (hash_algos() as $v) {
        $r = hash($v, $data, false);
        printf("%-12s %3d %s\n", $v, strlen($r), $r);
}
?>
maka akan menghasilkan:

5. Fungsi sha1()

Fungsi ini akan menghasilkan kode sandi sepanjang 40 karakter. Mirip seperti fungsi md5(). Contoh:
<?php echo sha1("petanikode"); ?>
akan menghasilkan:
2e71f75dee7cb3e4b8e2e6ef8b8b5e0eab8f78a2
Seperti halnya fungsi md5(), fungsi ini juga akan menciptakan karakter aneh, bila ditambahkan garam. Contoh:
<?php echo sha1("petanikode", "ga12am"); ?>
akan menghasilkan:
.q�]�|�����^��

6. Fungsi base64_encode()

Fungsi ini menghasilkan kode sandi dari teks yang diinputkan. Contoh:
<?php echo base64_encode("Petani kode"); ?>
akan menghasilkan:
UGV0YW5pIGtvZGU=
Sementara, untuk dekripsi atau dekode dapat menggunakan fungsi base64_decode(). Contoh:
<?php echo base64_decode("UGV0YW5pIGtvZGU="); ?>
akan menghasilkan:
Petani kode

Kesimpulan

Itulah enam fungsi untuk melakukan enkripsi di PHP. Setiap fungsi memiliki algoritmanya masing-masing. Anda juga bisa meracik sendiri fungsi enkripsi dengan memanfaatkan fungsi-fungsi di atas. Penambahan salt (garam) pada fungsi bertujuan agar password atau kode sandi tidak mudah dipecahkan.

Sepertinya, masih ada lagi fungsi lain yang belum disebutkan. Hmm... ada yang mau menambahkan?

---
Referensi:
http://www.w3schools.com/php/func_string_crypt.asp
http://php.net/manual/en/refs.crypto.php