Penggunaan fungsi DECYPT pada PHP

Sistem yang kita buat itu tidak selalu aman. Tidak ada sistem yang benar - benar seratus persen aman. Selalu ada celah keamanan yang rentan diserang dari luar, terutama apabila sistem yang kita buat sudah terhubung dengan jaringan internet. Selalu ada celah yang luput dari pengamatan. Kabar baiknya, kawan... kita masih bisa mengupayakan untuk mengurangi celah - celah keamanan dalam sistem kita. Salah satunya adalah dengan metode enkripsi.

Apa itu enkripsi?

Berdasarkan pengertian yang saya ambil di Wikipedia, Enkripsi itu adalah proses untuk mengamankan sebuah informasi. Lalu bagaimana cara mengamankannya? Caranya informasi ini diubah menjadi deretan huruf dan angka yang nantinya tidak bisa dibaca tanpa menggunakan ilmu khusus. Contoh penggunaannya biasanya digunakan untuk menyembunyikan password di database. Biasanya setiap password yang disimpan di database itu dienkripsi supaya tidak bisa dibaca oleh orang yang tidak punya akses.

Nah, karena kebetulan ada tugas kuliah juga, kali ini saya akan bahas beberapa metode enkripsi menggunakan fungsi yang ada di bahasa pemrograman PHP. Check this out ya!

1. Encode dan Decode

Fungsi yang biasa digunakan adalah base64_encode() dan base64_decode(). Biasa keliatan kan kaya apa fungsinya? Ya, untuk mengenkripsi kita bisa gunain fungsi base64_encode dan buat mengembalikan teks yang sudah dienkripsi kita bisa gunain fungsi base64_decode. Nah, berikut ini adalah contoh penggunaannya:

<?php  
   $plaintext = 'ini blog recodeku.blogspot.co.id.';  
   //Encode plaintext  
   $encode = base64_encode($plaintext);  
   //Decode plaintext  
   $decode = base64_decode($encode);  
   echo "teks = ".$plaintext."<br/>";   
   echo "teks yang diencode = ".$encode."<br/>";  
   echo "teks yang didecode = ".$decode;  
?>  

Dan jika kita run di browser, bakal muncul tampilan kaya gambar di bawah:

Penggunaan fungsi DECYPT pada PHP

Karena prosesnya sederhana dan rentan terhadap keamanan data, biasanya fungsi base64 ini digunakan bersamaan dengan fungsi lainnya.

2. Hashing

Nah, cara yang kedua adalah menggunakan metode hashing. Apa itu hashing? Yaitu salah satu metode yang bisa mengubah karakter apapun menjadi karakter acak. Nah hash ini ada banyak lho! Yang sering digunain itu (katanya) adalah MD5, SHA1, SHA256 dan CRC32. Ga kaya fungsi encode dan decode, hash ini cuma bisa enkripsi aja. Lho? Maksudnya? Kalau kamu ngubah teks, kamu ga ngembaliin teks itu lagi, ga bisa didekripsi lagi. Kenapa? Karena hash ini enkripsi yang bersifat satu arah. Saya biasanya gunain ini buat nyimpen password. Tapi kalau berdasar yang sudah berpengalaman, fungsi ini ga recommended lagi. Lebih direkomendasikan penggunaan fungsi password_hash() Di bawah ini contoh penggunaannya:

<?php  
   $plaintext = 'ini blog recodeku.blogspot.co.id.';  
   //md5 hash  
   $md5 = md5($plaintext);  
   //sha1 hash  
   $sha1 = sha1($plaintext);  
   //crc32 hash  
   $crc32 = crc32($plaintext);  
   echo "teks = ".$plaintext."<br/>";   
   echo "MD5 Hash = ".$md5."<br/>";  
   echo "SHA1 Hash = ".$sha1."<br/>";  
   echo "CRC32 Hash = ".$crc32."<br/>";  
?>  

Lalu, coba kita run di browser. Berikut ini adalah tampilannya:

Penggunaan fungsi DECYPT pada PHP

3. Encrypt dan Decrypt

Nah, kalau berdasar diskusi di forum pemrograman, metode encrypt dan decrypt ini recommended lho, kawan! Metode ini sering digunakan sama web developer buat mengamankan password yang disimpan di database. Nah, fungsi yang biasa digunakan di PHP itu adalah fungsi mcrypt cipher. Beda dengan metode Hash, gunain fungsi mcrypt ini bisa mengenkripsi dan juga mengembalikan lagi teks yang sudah dienkripsi lho! Selain itu, fungsi mcrypt ini memiliki beberapa metode algoritma cipher yang digunakan. Ada mcrypt_3des, mcrypt_blowfish, mcrypt_rijndael_128 dan lain-lain. Nah, berikut ini contoh penggunaannya:

<?php  
/* Open the cipher */  
$td = mcrypt_module_open('rijndael-256', '', 'ofb', '');  
/* Create the IV and determine the keysize length, use MCRYPT_RAND  
 * on Windows instead */  
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);  
$ks = mcrypt_enc_get_key_size($td);  
/* Create key */  
$key = substr(md5('ini kunci rahasia'), 0, $ks);  
/* Intialize encryption */  
mcrypt_generic_init($td, $key, $iv);  
   $plaintext = 'ini blog recodeku.blogspot.co.id.';  
/* Encrypt data */  
$encrypted = mcrypt_generic($td, $plaintext);  
/* Terminate encryption handler */  
mcrypt_generic_deinit($td);  
/* Initialize encryption module for decryption */  
mcrypt_generic_init($td, $key, $iv);  
/* Decrypt encrypted string */  
$decrypted = mdecrypt_generic($td, $encrypted);  
/* Terminate decryption handle and close module */  
mcrypt_generic_deinit($td);  
mcrypt_module_close($td);  
/* Show string */  
   echo "teks = ".$plaintext."<br/>";   
   echo "teks yang dienkripsi : ".$encrypted."<br/>";  
echo "teks yang didekripsi kembali :".trim($decrypted) . "\n";  
?>  

Nah, sekarang kita coba run di browser:

Penggunaan fungsi DECYPT pada PHP

Kesimpulan

Tidak ada sistem yang benar - benar seratus persen aman. Begitulah yang dikatakan kebanyakan orang. Kabar baiknya kita masih bisa mengupayakan untuk mengurangi celah - celah keamanan dalam sistem yang kita buat. Salah satunya adalah dengan mempelajari tentang encode dan decode, hashing, encrypt dan decrypt ini.

Selamat mencoba... Semangat terus ya!! :D

Apa fungsi dari enkripsi?

Enkripsi dapat digunakan untuk tujuan keamanan. Namun, teknik lain masih diperlukan untuk membuat komunikasi yang aman, terutama untuk memastikan integritas dan autentikasi sebuah pesan, misal kode autentikasi pesan (MAC) atau tanda tangan digital.

Apa tujuan dari enkripsi kata sandi layanan perintah?

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.

Bagaimana cara kerja enkripsi data?

Cara Kerja Enkripsi Ketika kamu mengirim data, data masih belum terenkripsi. Data yang belum dienkripsi biasanya disebut plaintext atau data mentah. Data tersebut nantinya akan dienkripsi dengan menggunakan algoritma enkripsi dan kunci atau kode enkripsi.

Jenis jenis enkripsi data apa saja?

Untuk melakukan enkripsi data, terdapat dua jenis metode yang dapat dilakukan; kriptografi simetris (private key) dan kriptografi asimetris (public key)..
Public Key..
Private Key..
Enkripsi MD2..
Enkripsi MD4..
Enkripsi MD5..
Enkripsi SHA..
Enkripsi RC4..
Enkripsi Base64..