BAB 4 Implementasi dan Pengujian Pada bab ini akan dibahas implementasi atau penerapan dari desain sistem dan aplikasi ke dalam bentuk source code, pengujian terhadap aplikasi untuk mengetahui sejauh mana aplikasi dapat berjalan dengan baik dan analisa dari hasil pengujian.
4.1
Implementasi Sistem
4.1.1 Tampilan Utama Tampilan ini adalah menu utama dalam program yang di buat. Tujuan dibentuk tampilan ini adalah dibuat sesederhana mungkin, namun dapat berfungsi sesuai dengan yang diharapkan.
Gambar 4.1 Tampilan Form utama
Penerapan algoritma WAKE ini terdiri dari beberapa bagian, satu bagian untuk memasukkan nama beserta password, dan dua tombol proses satu tombol untuk enkripsi dan satu tombol lainnya 33
34
untuk dekripsi. Berikut adalah penjelasan submenu dari masingmasing menu utama program ini.
Bagian Input, digunakan untuk memasukkan nama file yang yang akan dienkripsi dan password yang akan digunakan untuk enkripsi data. Di sebelah bagian input password terdapat pilihan jumlah putaran yang digunakan.
Bagian proses, digunakan untuk memproses. Dua proses yang digunakan sesuai dengan pilihan yaitu proses enkripsi, dan bagian yang lain yaitu dekripsi.
Bagian buka file, digunakan untuk membuka file.
Tutup, digunakan untuk menutup aplikasi
4.1.2 Tampilan About
Gambar 4.2 Tampilan Form About
Pada bagian form ini informasi yang dimasukan hanya informasi tentang keterangan judul aplikasi, data pembuat, dan data kampus. Dalam form ini hanya terdiri dari beberapa bagian saja, yaitu label, picture box, dan button.
4.1.3 Tampilan Masukan (Input)
35
Masukan untuk aplikasi enkripsi ini adalah dengan memilih tombol browse agar muncul kotak dialog seperti pada gambar 4.3
Gambar 4.3 Tampilan Form open dialog
Pada tombol browse terdapat suatu kode yang digunakan untuk menampilkan yaitu dengan perintah seperti berikut : Kode Program 1 Kode button browse 1. 2. 3. 4. 5.
6.
Private Sub cmdBrowse_Click() CommonDialog1.Filter = "Text File|*.txt|Word Document|*.Doc|Excel Document|*.xls" CommonDialog1.ShowOpen txtFileName = CommonDialog1.FileName If CommonDialog1.FileName <> "" Then lblKapasitasAwal.Caption = FileLen(CommonDialog1.FileName) End Sub
Dari prosedur kode program 1 dapat di ketahui bahwa prosedur pada baris 1 yang di pakai adalah cmdBrowse yang terjadi saat di klik. Bersifat private, artinya tidak untuk semua prosedur atau masih bersifat lokal dalam satu form. Kemudia pada baris 2 CommonDialog1.Filter
=
"Text
File|*.txt|Word
Document|*.Doc|Excel Document|*.xls" di gunakan untuk memfilter bahwa file yang di buka bertipe txt, doc, xls.
36
Pada baris ke 3, perintah CommonDialog1.ShowOpen di gunakan untuk menampilkan kotak dialog. Kemudia baris ke 4 txtFileName
=
CommonDialog1.FileName
digunakan
untuk
menampung file yang dipilih oleh user. Sedangkan baris ke 5 adalah untuk menampilkan kapasitas awal atau ukuran panjang file.
4.1.4 Tampilan Tabel S-Box Pada menu hasil terdapat sub menu tabel S-Box, jika menu tersebut ditekan maka akan muncul form yang berisi hasil pembentukan tabel S-Box dari inputan password yang kita masukan. Bentuk tampilan form tabel S-Box dapat dilihat pada gambar 4.4. Didalam formtabel S-Box ini akan ditampilkan hasil pembentukan array sebanyak 256 array yang nantiya akan digunakan pada proses selanjutnya, yaitu proses pembentukan kunci yang nantinya digunakan dalam proses enkripsi maupun proses dekripsi. Hasil pembentukan array yang ada dalam form tabel S-Box ini ditampilkan dalam 2 jenis, yaitu dalam bentuk biner dan dalam bentuk heksadesimal.
37
Gambar 4.4 Tampilan Form Tabel S-Box
Pada saat form tabel S-Box dipanggil dengan menekan tombol pada menu form utama, maka prosedur awal yang akan dijalankan adalah perintah sebagai berikut : Kode program 2 kode menu Tabel S-Box 1. 2. 3. 4. 5.
Private Sub mnuTabelSBox_Click() strKunci = txtPassword Call ProsesSBox(strKunci) frmTabelSBox.Show 1 End Sub
Dalam perintah dalam kode program 2, terlihat pada baris 2 sampai 3 dilakukan pengecekan terhadap inputan password yang kita masukan.Jika password yang kita masukan panjangnya kurang dari 16 karakter, maka akan muncul peringatan yang menyatakan jika panjang kunci yang digunakan sebagai password harus 16 karakter. Selanjutnya pada baris 6 dilakukan pengisian variable strkunci yang nilainya diambil dari txtPassword. Pada baris 7
38
dilakukan pemanggilan fungsi prosesSBox yang didalamnya dikirimkan juga variable strKunci.Pada baris 8 dilakukan prosedur memunculkan form tabel S-Box. Setelah dilakukan prosedur kode program 2, maka selanjutnya pada saat form tabel S-Box dijalankan maka prosedur yang akan dikerjakan pada saat form tabel S-Box muncul adalah sebagai berikut : Kode program 3 kode form tabel S-Box load 1. Private Sub Form_Load() 2. Dim N As Integer 3. lblSBox = "Tabel S-Box dari kunci '" & strKunci & "' :" 4. With MBit 5. .Rows = 258 6. .Cols = 3 7. .ColAlignment(0) = 4 8. .TextMatrix(0, 0) = "S-BOX / T[N]" 9. .ColWidth(0) = 1200 10. .ColAlignment(1) = 4 11. .TextMatrix(0, 1) = "BINER" 12. .ColWidth(1) = 4000 13. .ColAlignment(2) = 4 14. .TextMatrix(0, 2) = "HEKSA" 15. .ColWidth(2) = 2000 16. For N = 0 To 256 17. .TextMatrix(N + 1, 0) = "T [ " & N & " ]" 18. .TextMatrix(N + 1, 1) = T(N) 19. .TextMatrix(N + 1, 2) = FBinerToHex(T(N)) 20. Next N 21. End With 22. End Sub
4.1.5 Tampilan Hasil Pembentukan Kunci Pada menu hasil terdapat sub menu kunci, jika menu tersebut ditekan maka akan muncul form yang berisi hasil pembentukan kunci dari inputan password yang kita masukan. Bentuk tampilan form hasil pembentukan kunci dapat dilihat pada gambar 4.5. Didalam form hasil pembentukan kunci ini akan ditampilkan hasil pembentukan kunci dalam dua bentuk, yaitu dalam bentuk biner dan dalam bentuk heksadesimal. Juga akan ditampilkan mengenai
39
password yang kita inputkan serta jumlah putaran yang kita pilih untuk proses pembentukannya.
Gambar 4.5 Tampilan Form Hasil Kunci
Pada saat form hasil pembentukan kunci dipanggil dengan menekan tombol pada menu form utama, maka prosedur yang akan dijalankan adalah perintah sebagai berikut : Kode program 4 kode menu hasil 1. 2. 3. 4. 5. 6. 7.
Private Sub mnuKunci_Click() nPutaran = Val(txtputar.Text) strKunci = txtPassword Call ProsesSBox(strKunci) Call GetWakeKEY(strKunci, nPutaran) frmShowKunci.Show 1 End sub
Dalam perintah kode program 4, pada baris 2 dan 3 dilakukan pengecekan terhadap inputan password yang kita masukan. Panjang password yang dimasukan harus memiliki panjang 16 karakter. Apabila jumlah inputan karakter kurang dari 16 karakter maka akan muncul peringatan yang menyatakan panjang kunci harus memiliki panjang 16 karakter. Pada baris ke 6 dilakukan pengisian nilai variable nPutaran yang nilainya diambil dari nilai yang ada dalam
40
txtputar. Pada baris program ke 8, memanggil fungsi prosesSBox dan mengirimkan juga nilai strKunci. Pada baris program ke 9, memanggil fungsi GetWakeKEY serta mengirimkan nilai strKunci dan nPutaran. Pada baris program ke 10, berfungsi untuk menampilkan form ShowKunci. Kode program 5 kode form hasil pembentukan kunci load 1. Private Sub Form_Load() 2. Label1 = "Bit kunci yang dihasilkan dari kunci = '" & strKunci & _"' dengan " & nPutaran & " putaran adalah :" 3. Text1 = strKunciBiner 4. Text2 = FBinerToHex(strKunciBiner) 5. End sub
Dalam perintah kode program 5, pada baris 2 berfungsi menampilkan keterangan menganai informasi kunci yang kita masukan serta jumlah putaran yang digunakan. Pada kode program baris ke 3, berfungsi untuk menampilkan hasil pembentukan kunci dalam bentuk biner. Pada kode program baris ke 4, berfungsi untuk menampilkan hasil pembentukan kunci dalam bentuk heksadesimal.
4.1.6 Proses Enkripsi Untuk pemanggilan
langkah
enkripsi
beberapa
dilakukan
prosedur,
dengan diantaranya
melakukan adalah
cmdEncrypt_Click( ), DoEncrypt( ),WAKEEncryption( ) dimana ketiga prosedur tersebut saling berkaitam secara berurutan dalam pengeksekusiannya. Kode Program 2 Kode button encrypt 1. 2. 3. 4. 5.
strKunci = txtPassword nPutaran = Val(txtputar.Text) Call ProsesSBox(strKunci) Call GetWakeKEY(strKunci, nPutaran) DoEncrypt
41
Dalam prosedur kode program 2 nilai strKunci diambil dari password yang diinputkan oleh user, nilai nPutaran diambil dari nilai txtputar. Pada baris program 3, digunakan untuk memanggil fungsi Proses SBox yang didalamnya dikirimkan juga nilai strKunci. Baris program
4
memanggil
prosedur
GetWakeKEY
dan
juga
mengirimkan nilai strKunci dan nPutaran. Baris program 5 memanggil fungsi DoEncrypt. .Kode Program 3 Kode perintah untuk menjalankan proses enkripsi 1. Private Sub DoEncrypt() 2. Dim x As String 3. Dim sTemp As String 4. x = FreeFile 5. Open txtFileName.Text For Binary As #x 6. sTemp$ = Space$(LOF(x)) 7. Get x, , sTemp$ 8. Close #x 9. Call WAKEEncryption(sTemp$) 10. Open txtFileName.Text For Binary As #1 11. Put 1, , strCipher 12. Close 1 13. End Sub
Pada perintah kode program 3 digunakan untuk melakukan prosedur enkripsi. Pada kode program baris 2 dan 3 digunakan untuk melakukan deklarasi variable x dan sTemp yang berupa variable string. Pada kode program baris ke 4 mendeklarasikan bahwa variable x adalah freefile. Pada kode program baris ke 5 sampai 8 digunakan untuk memproses file dalam bentuk biner. Pada kode program baris 10 berfungsi memanggil prosedur WAKEEncryption dengan mengirimkan nilai variable sTemp yang berisi biner. Pada kode program baris ke 12 sampai 14 berfungsi untuk membuka file yang ada dalam txtFileName dalam bentuk biner dan memasukan strChiper (hasil enkripsi) dalam file dan menyimpannya.
42
Kode program 4 Kode perintah fungsi WAKEEncryption 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Public Sub WAKEEncryption(pcEnkripsi As String) Dim x As String Dim X1 As String Dim X2 As String Dim N As Double Dim cHasil As String strPlain = pcEnkripsi x = "" For N = 1 To Len(strPlain) buffer1$ = buffer1$ & FormatS(FDecToBiner(Asc(Mid(strPlain, N, 1))), "0", 8) Next N x = buffer1$ X1 = "": X2 = "": cHasil = "" For N = 1 To Len(x) Step 8 X1 = Mid(strKunciBiner, (N Mod 32), 8) X2 = FOpBiner("XOR", Mid(x, N, 8), X1, 8) cHasil = cHasil & Chr(FBinerToDec(X2)) Next N strCipher = cHasil buffer1$ = "" buffer2$ = ""
Pada perintah kode program 4 digunakan untuk menjalankan fungsi WAKEEncryption yang berada dalam module MWAKE. Dalam fungsi WAKEEncryption ini akan melakukan proses enkripsi terhadap variable sTemp yang dikirimkan dari fungsi DoEncrypt. Variabel sTemp yang dikirim dari fungsi DoEncrypt diterima oleh fungsi WAKEEncryption dengan variable pcEnkripsi. Baris 2 sampai 6 berfungsi mendeklarasikan variable yang digunakan dalam fungsi WAKEEncryption. Baris program 7 berfungsi menginisialisasika nilai strPlain nilainya sama dengan variable pcEnkripsi. Baris program 8 sampai 11 berfungsi untuk mengubah variable strPlain menjadi biner. Baris program 12 berfungsi untuk menginisialisasi variable x isinya sama dengan buffer1. Baris program 14 sampai 18 berfungsi untuk melakukan proses XOR terhadap variable x. Baris program 19 berfungsi untuk
43
mengembalikan nilai cHasil pada variable strChiper. Baris program 20 dan 21 berfungsi untuk mengosongkan nilai buffer1 dan buffer2.
4.1.7 Proses Dekripsi Untuk
langkah
dekripsi
dilakukan
dengan
melakukan
pemanggilan beberapa prosedur, yaitu cmdDecrypt_Click( ), DoEncrypt( ), WAKEDecryption( ). Proses yang dijalankan dalam dekripsi file hampir sama dengan proses enkripsi file, yang membedakan adalah pada proses enkripsi yang diinputkan adalah file plaintext sedangkan pada proses dekripsi yang diinputkan adalah file chipertext. Kode Program 4 Kode perintah untuk menjalankan proses dekripsi 1. 2. 3. 4. 5.
strKunci = txtPassword nPutaran = Val(txtputar.Text) Call ProsesSBox(strKunci) Call GetWakeKEY(strKunci, nPutaran) DoDecrypt
Dalam prosedur kode program 4 nilai strKunci diambil dari password yang diinputkan oleh user, nilai nPutaran diambil dari nilai txtputar. Pada baris program 3, digunakan untuk memanggil fungsi Proses SBox yang didalamnya dikirimkan juga nilai strKunci. Baris program
4
memanggil
prosedur
GetWakeKEY
dan
juga
mengirimkan nilai strKunci dan nPutaran. Baris program 5 memanggil fungsi DoDecrypt. Kode program 5 Kode perintah untuk menjalankan proses dekripsi 1. 2. 3. a. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Private Sub DoDecrypt() Dim x As String Dim sTemp As String x = FreeFile Open txtFileName.Text For Binary As #x sTemp$ = Space$(LOF(x)) Get x, , sTemp$ Close #x Call WAKEDecryption(sTemp$) Open txtFileName.Text For Binary Access Write As #2 Put #2, , strPlain Close #2 End Sub
44
Pada perintah kode program 5 digunakan untuk membaca file yang diinputkan dalam bentuk biner dan fungsinya sama dengan kode program 3. Kode program 6 Kode perintah fungsi WAKEDecryption 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Public Sub WAKEDecryption(pcDekripsi As String) Dim x As String Dim X1 As String Dim X2 As String Dim N As Double Dim cHasil As String strCipher = pcDekripsi x = "" For N = 1 To Len(strCipher) buffer1$ = buffer1$ & FormatS(FDecToBiner(Asc(Mid(strCipher, N, 1))), "0", 8) Dalam proses dekripsi ini langkahnya hampir sama dengan langkah 11. Next N 12. x = buffer1$ 13. X1 = "": X2 =enkripsi "": cHasil = ""yang telah dijelaskan pada langkah pada saat proses seperti 14. For N = 1 To Len(x) Step 8 15. X1 = Mid(strKunciBiner, (N Mod 32), 8) sebelumnya. Hanya saja yang membedakan pada proses ini dengan 16. X2 = FOpBiner("XOR", Mid(x, N, 8), X1, 8) 17. cHasil = cHasil & Chr(FBinerToDec(X2)) proses sebelumnya adalah saat dekripsi. Pada langkah dekripsi yang 18. Next N 19. strPlain = cHasil 20. buffer1$ = "" pengubahan dari bentuk file terenkripsi ke bentuk dilakukan adalah 21. buffer2$ = "" 22. End Sub plain teks.
Pada kode program 6 digunakan untuk melakukan proses dekripsi terhadap chipetext yang dikirimkan dari fungsi DoDecrypt().
4.2
Pengujian Pada bagian ini akan dilakukan pengujian terhadap aplikasi
kriptografi WAKE dengan menggunakan jenis file .txt yang berisi data numerik dan data karakter. Pengujian dilakukan sebanyak 32 kali dengan panjang karakter dan numerik yang berbeda-beda, total panjang karakter dan numerik yang ada ddidalam file adalah 31 karakter (numerik dan karakter). Pengujian dilakukan dengan memperhatikan waktu yang digunakan untuk proses enkripsi dan proses dekripsi pada file. Hasil pengujian proses enkripsi dan
45
dekripsi terhadap kombinasi numerik dan karakter dapat dilihat pada lampiran 1 dan lampiran 2.
Gambar 4.6 Grafik Proses Enkripsi
Gambar 4.7 Grafik Proses Dekripsi
Jika dilihat dari pengujian proses enkripsi dan dekripsi terhadap kombinasi antara numerik dan karakter, waktu yang dihasilkan bervariatif walaupun ukuran panjang file sama. Dari hasil pengujian terhadap file yang berisi kombinasi antara numerik dan karakter, dilakukan analisa panjang numerik dan karakter terhadap
46
waktu enkripsi dan dekripsi. Untuk analisa proses enkripsi dan dekripsi pada karakter dapat dilihat pada Tabel 4.1. Tabel 4.1 Tabel Proses Karakter
Persentase
Karakter
Rata-rata enkripsi
Rata-rata Dekripsi
0% - 24 %
0-7
0.097656
0.251953
25%-49 %
8 - 15
0.253906
0.228516
50%-74 %
16 - 24
0.343750
0.275391
75-100 %
24 - 31
0.390625
0.341797
Dari hasil perhitungan panjang karakter terhadap waktu proses enkripsi dan dekripsi, dapat dilihat ketika panjang karakter 0 - 7 waktu proses enkripsi adalah 0.097656 dan waktu proses dekripsi 0.251953. Kemudian ketika panjang karakter 24 - 31, waktu enkripsi adalah 0.390625 dan waktu dekripsi adalah 0.341797. Dari pengujian tersebut dapat dikatakan semakin banyak jumlah karakter yang ada maka waktu yang dibutuhkan untuk proses enkripsi dan dekripsi semakin meningkat. Untuk proses perhitungan panjang numerik terhadap waktu proses enkripsi dan dekripsi dapat dilihat pada Tabel 4.2 Tabel 4.2 Tabel Proses Numerik
Persentase
Numerik
Rata-rata enkripsi
Rata-rata Dekripsi
0% - 24 %
0-7
0.390625
0.341797
25%-49 %
8 - 15
0.343750
0.275391
50%-74 %
16 - 24
0.253906
0.228516
75-100 %
24 - 31
0.097656
0.251953
Dari hasil perhitungan dapat dilihat ketika panjang numerik yang ada, ketika panjang numerik 0 - 7 waktu yang dibutuhkan
47
untuk proses enkripsi adalah 0.390625 dan waktu untuk proses dekripsi 0.341797. Sedangkan untuk panjang karakter 24 - 31, waktu yang dibutuhkan untuk proses enkripsi adalah 0,467493 dan waktu yang dibutuhkan untuk proses dekripsi adalah 0.251953. Dari pengujian tersebut dapat dikatakan semakin banyak jumlah numerik yang ada maka waktu yang dibutuhkan untuk proses enkripsi dan dekripsi semakin menurun.