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
outText= '';function encrypt_string($str_data)
{
$encKey = 'keyenkripsi'; //. ganti sesuka anda
Penjelasan :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;
}
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...
0 komentar: