Encrypt Decrypt Dengan PHP, Teknik Kamuflase [SECRET]

PHP Encrypt Decrypt, Apa itu enkripsi? enkripsi adalah sebuah teknik yang bertujuan untuk  mengamankan sebuah informasi. Informasi ini biasanya disembunyikan untuk kepentingan tertentu misalnya informasi password didalam database. Informasi ini akan di ubah menjadi deretan angka / huruf yang sulit di baca dengan ilmu kanuragan apapun.
Encrypt Decrypt Dengan PHP
Iconfinder

Dekripsi merupakan proses pengembalian informasi dari hasil enkripsi. Dengan dekripsi kita bisa membaca dan memahami kembali isi dari informasi yang kita kirimkan.

Berikut ini adalah beberapa fungsi metode enkripsi yang sering kita dengar dalam pemrograman php.

1. Encode dan Decode

Salah satu metode encode dan decode yang sering dipakai adalah base64_encode() dan base64_decode(). Dari namanya saja kita sudah tahu apa kegunaannya, ada yang untuk encode dan ada yang untuk decode. Lihat contoh berikut:
<?php  
    $plaintext = 'sedotcode.com';  
    //Encode plaintext  
    $encode = base64_encode($plaintext);  
    //Decode plaintext  
    $decode = base64_decode($encode);  
    echo $plaintext."<br/>";   
    echo "Teks yang diencode = ".$encode."<br/>";  
    echo "Teks yang didecode = ".$decode;  

//Hasil 
//     sedotcode.com
//     Teks yang diencode = c2Vkb3Rjb2RlLmNvbQ==
//     Teks yang didecode = sedotcode.com 


2. Hashing

Apa itu hashing? hashing adalah salah satu metode yang bisa mengubah karakter apapun menjadi karakter acak.

Ada banyak jenis hash yang sering digunakan, diantaranya adalah MD5, SHA1, SHA256 dan CRC32. Hash ini sendiri bersifat satu arah, artinya hash ini hanya enkripsi daja. Saya biasa menggunakan hash untuk menyimpan password didalam database. Namun metode ini menurut pakar  php sudah tidak rekomended.

Contoh Penggunaannya:
<?php  
      $plaintext = 'sedotcode.com';  
      //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/>";  

      // HAsil
// teks = sedotcode.com
// MD5 Hash = f01da6943eb9266a3dc6d734906a1afa
// SHA1 Hash = 092e2e989f59338ab6cb03285493d4f58c4f8537
// CRC32 Hash = -282948462
 ?>  


Encrypt dan Decrypt

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.

Bagaimana kalau membuat metode decrypt encrypt gabungan dari metode encode decode diatas? tentu sangat bisa dilakukan.

Berikut adalah beberapa script snipet yang bisa kita gunakan untuk keperluan enkripsi dan dekripsi dengan php.

OpenSSL

<?php
function encrypt_decrypt($action, $string) {
    $output = false;
    $encrypt_method = "AES-256-CBC";
    $secret_key = 'key_one';
    $secret_iv = 'key_two';
    // hash
    $key = hash('sha256', $secret_key);
    // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
    $iv = substr(hash('sha256', $secret_iv), 0, 16);
    if ( $action == 'encrypt' ) {
        $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
        $output = base64_encode($output);
    } else if( $action == 'decrypt' ) {
        $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
    }
    return $output;
}
// Contoh Penggunaan
$plain_txt = "Sedot Code";
$encrypted_txt = encrypt_decrypt('encrypt', $plain_txt);
$decrypted_txt = encrypt_decrypt('decrypt', $encrypted_txt);


mcrypt

<?php
function safe_b64encode($string) {
    $data = base64_encode($string);
    $data = str_replace(array('+','/','='),array('-','_',''),$data);
    return $data;
}

function safe_b64decode($string) {
    $data = str_replace(array('-','_'),array('+','/'),$string);
    $mod4 = strlen($data) % 4;
    if ($mod4) {
        $data .= substr('====', $mod4);
    }
    return base64_decode($data);
}

function encrypt_decrypt($action,$value)
{
    $_key = '1234567890987654';
    if(!$value){return false;}

    if ($action == 'encrypt') 
    {
        $text = $value;
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $crypttext     = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $_key, $text, MCRYPT_MODE_ECB, $iv);
        $output     = trim(safe_b64encode($crypttext));
    }
    elseif ($action == 'decrypt') 
    {
        $crypttext = safe_b64decode($value);
        $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $_key, $crypttext, MCRYPT_MODE_ECB, $iv);
        $output     = trim($decrypttext);
    }

    return $output;
}

// Contoh 
$str = "Sedot Code";
$encrypt = encrypt_decrypt('encrypt',$str);
$decrypt = encrypt_decrypt('decrypt',$encrypt);

Sekian bahasan mengenai teknik kamuflase ini, semoga bermanfaat untuk teman-teman sekalian. Spesial thank to : joashp & niczak
Load disqus comments

0 komentar