Responsive Ads Here

Saturday, December 03, 2011

Program Enkripsi XOR


Tugas Mata Kuliah Keamanan Informasi Lanjut kali adalah membuat program enkripsi sederhana dengan menggunakan algoritma XOR (Exclusive OR). Pada dasarnya algoritma XOR ini menggunakan sebuah kunci untuk meng-XOR-kan teks yang nanti hasil enkripsinya disimpan dalam bentuk biner.


Setelah membaca-membaca referensi dari RAD yang saya sedikit kuasai, pada Visual Foxpro terdapat fungsi yang dapat meng-XOR-kan bit data dari dua variable numeric. Nama Fungsi tersebut adalah BITXOR().
Syntaksnya : BITXOR(var1,var2)
Contohnya adalah:
Var1=5(binary: 00000101)
Var2=6(binary: 00000110)
Hasil=BITXOR(Var1,Var2)
?Hasil
maka hasilnya adalah : 3 (binary:00000011)
Jika dibuatkan table maka proses XOR (8 bit) seperti berikut:



Decimal
Binary
5
0
0
0
0
0
1
0
1
6
0
0
0
0
0
1
1
0
XOR=3
0
0
0
0
0
0
1
1




Untuk data yang bersifat numeric implementasi XOR sangat sederhana, akan tetapi bagaimana jika data yang akan di XOR adalah text atau karakter kita harus mengubah dulu ke ASCII. Setelah bentuknya menjadi ASCII maka dapat dijalankan proses eXclusive OR nya.
Setelah cari-cari referensi di internet akhirnya dapat listing program yang perlu dimodikasi sedikit dan diterapkan ke dalam OOP (Object Oriented Programming).
Berikut listing program hasil modifikasi, dengan membuang listing yang tidak perlu. Listing ini saya taruh di procedure tombol encypt.


--------------------------mulai disini----------------------------------------
lcPesan= ALLTRIM(“Mari Demo ke Rektorat”&& variable pesan
lcKosong=""&& untuk menampung hasil
lcKunci = ALLTRIM(upper(bdg))
lslen = Len(lcPesan) && menghitung panjang character pesan
lklen = Len(lcKunci) && menghitung panjang character kunci
j = 1 && sebagai awal pengambilan character kunci
For i = 1 To lslen && loop dari 1 sampai dengan panjang karakter pesan
If j > lklen THEN && Jika j lebih panjang dari char kunci maka kembali ke 1
j = 1
endif
lpbyte = Asc(Substr(lcKunci, j, 1)) && ambil huruf jadikan ascii
lsbyte = Asc(Substr(lcPesan, i, 1)) && ambil huruf jadikan ascii
labyte = BitXor(lsbyte, lpbyte)&&Hasil BitXor
lcKosong=lcKosong + CHR(ABS(labyte)) && Tempat penampungan Hasil XOR
j = j + 1
Endfor
?ALLTRIM(lcKosong)
---------------------------------------selesai---------------------------------------------------
Dari hasil modifikasi listing tersebut diterakan ke dalam procedure tombol encrypt pada desain form. Proses pembuatan dan pengaturan objek tidak saya ceritakan secara mendetil karena akan memakan waktu, berikut saya tampilkan screenshot desain formnya.


Berikut hasil penerapan listing algoritma enkripsi XOR pada pemrogramman berorientasi objek visual foxpro. Program ini mengenkripsi plain text “Mari kita mulai berdemo” dengan kata kunci “bdg”. Sebagai tambahan untuk kata kunci saya batasi hanya sampai 4 karakter panjangnya.


Kelemahan dari algoritma XOR adalah pada saat dienkripsi untuk kedua kalinya, maka pesan awal akan tertayang kembali. Berikut screenshot untuk enkripsi yang kedua kali.





No comments:

Post a Comment