Encrypt dan decrypt data adalah salah satu cara untuk mengamankan data agar tidak mudah dibaca. Di CodeIgniter kita bisa membuat library sendiri untuk kebutuhan encrypt dan decrypt data. Tutorial ini saya buat ketika saya ingin ID data dari suatu item di URL terenkripsi. Contoh :
- ID di Enkripsi: http://localhost/blog/EnkripsiDanDeskripsi/M2o5Y3YyMjQzU1lYK29vWlRFNFBMUT09 (Secure)
- ID di Deskripsi: http://localhost/blog/EnkripsiDanDeskripsi/2020 (Not Secure)
Dari contoh diatas kita dapat melihat bahwa ID dari URL yang terenkripsi mempunyai nilai random, sedangkan ID dari URL yang terdeskripsi mempunyai nilai 2020.
Langkah 1. Buatlah sebuah file baru dengan nama Secure.php dan security.ini (penamaan bebas) dan simpan didirektori applications/libraries/
Isi dari file Secure.php
<?phpif (!defined("BASEPATH")) exit("No direct script access allowed");class secure{function encrypt_url($string){$output = false;$security = parse_ini_file('security.ini'); // parsing file security.ini output:array asosiatif//Hasil parsing masukkan kedalam variable$secret_key = $security['encryption_key'];$secret_iv = $security['iv'];$encrypt_method = $security['encryption_mechanism'];//hash $secret_key dengan algoritma sha256$key = hash("sha256", $secret_key);//iv(initialize vector), encrypt iv dengan encrypt method AES-256-CBC (16 bytes)$iv = substr(hash("sha256", $secret_iv), 0, 16);$result = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);$output = base64_encode($result);return $output;}function decrypt_url($string){$output = false;$security = parse_ini_file('security.ini'); // parsing file security.ini output:array asosiatif//Hasil parsing masukkan kedalam variable$secret_key = $security['encryption_key'];$secret_iv = $security['iv'];$encrypt_method = $security['encryption_mechanism'];//hash $secret_key dengan algoritma sha256$key = hash("sha256", $secret_key);//iv(initialize vector), encrypt $secret_iv dengan encrypt method AES-256-CBC (16 bytes)$iv = substr(hash("sha256", $secret_iv), 0, 16);$output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);return $output;}}
encryption_key=4987632563987124 ;16 digitsiv=4532879263570159 ;16 digitsencryption_mechanism=aes-256-cbc
EnkripsiDanDekripsi.php (Controller)
<?phpdefined('BASEPATH') or exit('No direct script access allowed');class EnkripsiDanDekripsi extends CI_Controller{public function __construct(){parent::__construct();$this->load->library('secure'); // load library secure yg telah kita buat}public function index(){$id = 2020; // data yg akan di enkripsi$encrypt_id = $this->secure->encrypt_url($id); // mengenkripsi $id$decrypt_id = $this->secure->decrypt_url($encrypt_id); // mendekripsi $encrypt_id//Outputecho "<b>Text asli: </b>" . $id;echo "<br/> <br/>";echo "<b>Text di Enkripsi: </b>" . $encrypt_id;echo "<br/><br/>";echo "<b>Text di Dekripsi:</b> " . $decrypt_id;echo "<br/> <br/>";echo "<b>URL di Enkripsi: </b>" . base_url() . "EnkripsiDanDekripsi/" . $encrypt_id;echo "<br/> <br/>";echo "<b>URL di Dekripsi: </b>" . base_url() . "EnkripsiDanDekripsi/" . $decrypt_id;}}
Untuk menjalankan program silahkan ketik URL http://localhost/blog/enkripsidandekripsi
Ouput Program:
0 Komentar