CodeIgniter Tutorial - Membuat Library Encrypt dan Decrypt Data di CodeIgniter

 


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

<?php
if (!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;
    }
}


Isi dari file security.ini
    encryption_key=4987632563987124 ;16 digits
    iv=4532879263570159 ;16 digits
    encryption_mechanism=aes-256-cbc


Langkah 2.
Buatlah sebuh controller dengan nama EnkripsiDanDekripsi.php

EnkripsiDanDekripsi.php (Controller)
<?php
defined('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

        //Output
        echo "<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:


Itulah cara untuk encrypt dan decrypt data di CodeIgniter. Semoga bermanfaat!

Posting Komentar

0 Komentar