Thursday, August 27, 2015

Enkripsi Data dengan metode XOR pada PHP

sponsor menarik
daftar link ads terkait : Enkripsi Data dengan metode XOR pada PHP
XOR

Pada kesempatan kali ini kita akan membahas bagaimana melakukan enkripsi data dan dekripsi data pada PHP dengan membuat fungsi untuk enkripsi dan dekripsi data pada  pemrograman PHP.

Enkripsi adalah salah satu bagian terpenting terkait proses keamanan dalam pemrograman, terutama pemrograman website dengan PHP. Karena dengan enkripsi data yang diproses oleh aplikasi web yang kita buat tidak bisa dibaca dengan mata telanjang sebelum melalui proses deskripsi. Sehingga mau tidak mau sebagai programmer wajib mengerti dan mampu mengaplikasikan teknik enkripsi, walaupun hanya enkripsi sederhana.

Pengertian Enkripsi

Sebelum kita praktikan pembuatan kode untuk enkripsi data pada PHP, ada baiknya kita pahami terlebih dahulu tentang pengertian Enkripsi.

Enkripsi adalah proses transformasi suatu pesan atau informasi untuk menyembunyikan data asli dari pesan atau informasi tersebut kedalam bentuk data yang lebih susah terbaca secara tekstual. Dengan demikian enkripsi erat dengan kaitan suatu sandi atau pengkodean kusus, dimana hanya orang-orang tertentu saja yang bisa membacanya.

Misal nya sandi morse, sandi rumput, dan sandi-sandi lainya adalah salah satu contoh analogi Enkripsi data dalam kehidupan sehari-hari. Tujuan dari penggunaan sandi-sandi tersebut hanyalah satu, yaitu menyembunyikan pesan-pesan kusus dari pengirim sandi ke penerima sandi yang telah mengetahui proses pembacaan sandi ke dalam abjad dan bahasa manusia.


Enkripsi Sederhana

Salah satu contoh enkripsi paling sederhana yang dikenal dalam dunia komputasi adalah enkripsi dengan caesar chiper, yaitu dengan teknik penggeseran nilai byte secara teratur. Misalnya dengan menggeser (menambahkan) nilai 1 pada setiap karakter berikut :

N-A-B-I-L-A menjadi O-B-C-J-K-M-B

Sehingga setelah melalui proses enkripsi manual string N-A-B-I-L-A menjadi O-B-C-J-K-M-B dan proses kebalikanya yang disebut dekripsi akan menggeser (mengurangi) nilai 1 pada setiap karakter yang dienkrip. 

O-B-C-J-K-M-B kembali menjadi N-A-B-I-L-A


Dasar Enkripsi

Pada dunia komputasi dasar enkripsi data adalah sebagai berikut :

Byte : byte merupakan satuan terkecil data dengan rentang nilai 0-255, dimana masing-masing nilai mempunyai representasi (karakter) setelah melalui proses enkoding. 
Misalnya suatu karakter "A" sebenarnya adalah satu satuan byte dengan nilai 65 (ASCII). Namun secara tekstual kita akan melihatnya dalam bentuk karakter/huruf "A" setelah melalui proses enkoding. Nah, dengan dasar nilay byte sutau karakter inilah kita bisa melakukan teknik-teknik enkripsi dengan menggeser, menambah, mengurasi, atau mengalikan nilainya secara beraturan.

Operator Bit : Dengan menggunakan operator bit, kita dapat merubah nilai byte setiap karakter lalu mengembalikan nya seperti semula dengan logika kebalikanya. Beberapa operasi bit yang bisa digunakan untuk enkripsi dua arah (enkrip/dekrip) adalah XOR, ROL, dan ROR. Disini kita hanya akan menggunakan teknik XOR pada praktik pembuatan kode enkripsi dan dekripsi nya.

Berikut adalah implementasi kode enkripsi dan dekripsi dengan teknik XoR pada pemrograman PHP.

Kode Enkripsi PHP

        function encrypt_string($str_data)
        {
            $
encKey = 'keyenkripsi'; //. ganti sesuka anda
                       outText= '';
            for($i=0;$i<strlen($str_data);)
            {
                for($j=0;($j<strlen($encKey) && $i<strlen($str_data));$j++,$i++)
                {
                    $outText .= $str_data{$i} ^ $encKey{$j};
                }
            }
            $outText = base64_encode($outText);
            return $outText;
        }
Penjelasan :

Pada  kode enkripsi di atas, kita menentukan kunci enkripsi terlebih dahulu untuk kita gunakan sebagai operand XoR dengan karakter-karakter atau data yang akan kita enkripsi. Tekniknya adalah dengan melakukan iterasi pada data yang akan dienkripsi yang dipasangkan key enkripsi nya secara berputar. Dengan demikian setiap posisi karakter dari data yang akan dienkripsi akan di-operasikan dengan nilai byte yang berbeda-beda sesuai kata kunci yang kita pakai.

Setelah proses transformasi data (nilai byte) semua karakter selesai, proses akhirnya adalah dengan melakukan decode ke bas64 karena hasil dari enkripsi XoR adalah bukan plain teks sehingga kita perlu merubah-nya kedalam bentuk base64 untuk menjaga keutuhan data dalam berbagai macam enkoding/protokol nantinya.


 
Kode Dekripsi PHP (Kebalikan dari Enkripsi nya)
        function decrypt_string($str_data)
        {
            $str_data = base64_decode($str_data); 
            $encKey = 'keyenkripsi'; //. ganti sesuka anda 
            $outText = '';

            for($i=0;$i<strlen($str_data);)
            {
                for($j=0;($j<strlen($encKey) && $i<strlen($str_data));$j++,$i++)
                {
                    $outText .= $str_data{$i} ^ $encKey{$j};
                }
            }
            
            return $outText;
        }

Penjelasan :
 
Kode di atas adalah kebalikan proses dari kode enkripsi yang kita tulis sebelumnya, namun perlu kita ingat bahwa kita melakukan decode base64 terlebih dahulu sebelum melakukan proses dekripsi dengan metode XoR.


Pengujian Kode


Untuk melakukan pengujian kode enkripsi dan dekripsi di atas, berikut adalah kode nya:

$data = 'nabilamaryam';
$str_enc =  encrypt_string($data);
$str_dec = decrypt_string($str_enc);

echo $data;
echo $str_enc;
echo $str_dec;  



Implementasi Enkripsi Pada Website

Banyak hal yang bisa kita implementasikan pada suatu website dengan teknik enrkripsi dan dekripsi, karena proses tersebut erat kaitanya dengan keamanan pada suatu website. Enkripsi bisa diimplementasikan baik pada proses backend dan frontend aplikasi website, terutama terkait dengan informasi-informasi yang bersifat sensitif seperti password dan url.
Semoga Bermanfaat...

Share This
Previous Post
Next Post

Seorang pecinta kode yang tertarik dunia bloging dan riset SEO.

0 komentar: