TUTORIAL

PHP

Tutorial lengkap membuat Keamanan Data Enkripsi Deskripsi menggunakan OpenSSL (PART 1 : dengan PHP Native)

07-07-2020 17:17:07 BY Alfikri Read 1546x 3 min read

Di tutorial ini anda akan mempelajari bagaimana mengamankan data menggunakan Enkripsi Deskripsi. Pada akhirnya anda akan menerapkan kedalam aplikasi yang membutuhan keamanan yang kuat.

Enkripsi Deskripsi biasanya banyak digunakan diberbagai kasus seperti :

  1. Pemanggilan pada ID (Contoh : id_berita, id_user)
  2. Pengiriman pesan
  3. Dll

Untuk menguasai Enkripsi dan Deskripsi ini saya menggunakan fungsi-fungsi sebagai berikut :

  • hash
  • base64_encode dan base64_decode
  • openssl_encrypt dan openssl_decrypt

Fungsi hash

Fungsi ini akan menghasilkan sebuah kode hash dengan algoritma tertentu.

Contoh :

$key = "Klinik Code";
echo hash('sha256', $key);
?>


Hasilnya :

811531dbf8aaa81d0bec5c89a0276b3ef09d3e05856661a9bad050fa42647eb4


Pada contoh diatas dapat disimpulkan bahwa "sha256" adalah sebuah algoritma yang akan digunakan untuk proses Enkripsi Data.

Fungsi base64_encode dan base64_decode

base64 adalah teknik untuk menterjemahkan data biner yang berbentuk ASCII.

Di PHP tersedia fungsi khusus untuk Enkrip dan Dekripsi.

  1. base64_encode : berfungsi untuk encode string.
  2. base64_decode : berfungsi untuk mengembalikan string yang telah di encode

Contoh :


$data = "Selamat datang di klinikcode.com";

echo base64_encode($data);


Output :

U2VsYW1hdCBkYXRhbmcgZGkga2xpbmlrY29kZS5jb20=


Fungsi openssl_encrypt dan openssl_decrypt

Enkripsi dan deskripsi menggunakan openssl sangat baik untuk mengamankan data. Dimana openssl menggunakan metode 2 arah (two-way hasing).

Aturan penulisan openssl_enrypt dan openssl_decrypt dapat dilihat sebagai berikut :

openssl_encrypt ( string $data , string $method , string $key [, int $options = 0 [, string $iv = "" [, string &$tag = NULL [, string $aad = "" [, int $tag_length = 16 ]]]]] ) : string

Penjelasannya sebagai berikut :


Parameter
Penjelasan
data
Data pesan plaintext untuk dienkripsi.
method
Metode sandi.
key
Kunci.
options
opsi adalah disjungsi bitwise pada flag OPENSSL_RAW_DATA dan OPENSSL_ZERO_PADDING.
iv
Vektor Inisialisasi non-NULL.
tag
Tag otentikasi dilewatkan oleh referensi ketika menggunakan mode cipher AEAD (GCM atau CCM).
aad
Data otentikasi tambahan.
tag_length
Panjang tag otentikasi. Nilainya bisa antara 4 dan 16 untuk mode GCM.

Apa selanjutnya ?

Selanjutnya kita akan membuat enkripsi dan deskripsi menggunakan perpaduan fungsi-fungsi yang telah dijelaskan diatas.

Silahkan input kedalam code editor sebagai berikut :


function my_crypt($string, $action = 'E')
{
    $secret_key = 'my_simple_secret_key';
    $secret_iv = 'my_simple_secret_iv';

    $output = false;
    $encrypt_method = "AES-256-CBC";
    $key = hash('sha256', $secret_key);
    $iv = substr(hash('sha256', $secret_iv), 016);

    if ($action == 'E') {
        $output = base64_encode(openssl_encrypt($string, $encrypt_method, $key, 0, $iv));
    } else if ($action == 'D') {
        $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
    }

    return $output;
}

$data = "Klinik Code";
echo "Enkripsi";
echo "
"
;
echo 'Data : ' . $data;
echo "
"
;
echo 'Output : ' . my_crypt($data, 'E');
echo "
"
;
echo "Deskripsi";
echo "
"
;
echo 'Data : ' . my_crypt($data, 'E');
echo "
"
;
echo 'Output : ' . $data;



Jika berhasil, maka akan terlihat sebagai berikut :

Demo

About author

Alfikri

Saya seorang web developer. Saya sangat suka tantangan untuk mempelejari hal-hal baru dalam dunia pemograman.




Leave a Reply

Scroll to Top