Implementasi IMPLEMENTASI DAN PENGUJIAN

Universitas Sumatera Utara

BAB 4 IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi

Setelah sistem yang akan dibangun dianalisis dan dirancang, selanjutnya dilakukan implementasi sistem tersebut menjadi sebuah program. Sistem dibangun menggunakan Android Studio dengan bahasa pemrograman Java. 4.1.1. Implementasi pseudocode enkripsi Vigenere Pada bagian ini pseudocode enkripsi Vigenere diimplementasikan ke dalam bahasa Java. Berikut potongan source code proses enkripsi Vigenere dapat dilihat pada Gambar 4.1. Gambar 4.1 Potongan Source Code Enkripsi Vigenere 4.1.2. Implementasi pseudocode enkripsi Myszkowski Pada bagian ini pseudocode enkripsi Myszkowski diimplementasikan ke dalam bahasa Java. Berikut potongan source code proses enkripsi Myszkowski dapat dilihat pada Gambar 4.2. for i = 0; i plaintext.length; i++ { j = i key1.length; key += key1.charAtj; } for i = 0; i plaintext.length; i++ { j = int plaintext.charAti; k = int key.charAti; pesan = j - 32 + k - 32 95; pesan += 32; ciphertext1 += char pesan; } Universitas Sumatera Utara 38 Gambar 4.2 Potongan Source Code Enkripsi Myszkowski 4.1.3. Implementasi pseudocode dekripsi Myszkowski Pada bagian ini pseudocode dekripsi Myszkowski diimplementasikan ke dalam bahasa Java. Berikut potongan source code dekripsi Myszkowski dapat dilihat pada Gambar 4.3. int kol = key2.length, bar = int Math.ceildouble ciphertext1.length kol; char [][] matrix = new char[bar][kol]; for i = 0; i bar; i++ { for j = 0; j kol; j++ { if tmp ciphertext1.length { matrix[i][j] = ciphertext1.charAttmp; tmp++; } else { matrix[i][j] = Character.MIN_VALUE; } } } tmp = -1; while ciphertext2.length ciphertext1.length { for i = 0; i kol; i++ { if Integer.parseIntkey2.charAti + tmp { kecil = Integer.parseIntkey2.charAti + ; break ; } } for i = 0; i kol; i++ { if Integer.parseIntkey2.charAti + tmp Integer.parseIntkey2.charAti + kecil { kecil = Integer.parseIntkey2.charAti + ; } } for i = 0; i bar; i++ { for j = 0; j kol; j++ { if Integer.parseIntkey2.charAtj + == kecil matrix[i][j] = Character.MIN_VALUE { ciphertext2 += matrix[i][j]; } } } tmp = kecil; } Universitas Sumatera Utara 39 Gambar 4.3 Potongan Source Code Dekripsi Myszkowski 4.1.4. Implementasi pseudocode dekripsi Vigenere Pada bagian ini pseudocode dekripsi Vigenere diimplementasikan ke dalam bahasa Java. Berikut potongan source code dekripsi Vigenere dapat dilihat pada Gambar 4.4. int kol = key2.length, bar = int Math.ceildouble ciphertext2.lengthkol; char [][] matrix = new char[bar][kol]; while k ciphertext2.length { for i=0; ikol; i++ { if Integer.parseIntkey2.charAti + tmp { kecil = Integer.parseIntkey2.charAti + ; break ; } } for i=0; ikol; i++ { if Integer.parseIntkey2.charAti + tmp Integer.parseIntkey2.charAti + kecil { kecil = Integer.parseIntkey2.charAti + ; } } for i=0; ibar; i++{ for j=0; jkol; j++{ if Integer.parseIntkey2.charAtj+ == kecil{ if i == bar-1 j = kol-barkol- ciphertext2.length{ } else { matrix[i][j] = ciphertext2.charAtk; k++; } } } } tmp = kecil; } for i=0; ibar; i++{ for j=0; jkol; j++{ if ciphertext1.length ciphertext2.length{ ciphertext1 += matrix[i][j]; } } } Universitas Sumatera Utara 40 Gambar 4.4 Potongan Source Code Dekripsi Vigenere 4.1.5. Implementasi enkripsi Vigenere cipher Pada bagian ini dijelaskan proses implementasi algoritma Vigenere cipher pada enkripsi. Sebelum melakukan enkripsi, kunci yang digunakan terlebih dahulu diulangi hingga memiliki panjang yang sama dengan plaintext. Sebagai contoh digunakan plaintext “FAISAL RIDHO” dengan key1 “ILKOM” dan key2 “7414”. 4.1.5.1. Proses pengulangan kunci Pada proses ini, key1 diulangi hingga memiliki panjang yang sama dengan plaintext. Berikut adalah proses pengulangan kunci untuk algoritma Vigenere cipher : plaintext : “FAISAL RIDHO“ key1 : “ILKOM” key : “ILKOMILKOMIL” Keterangan : plaintext = pesan yang akan dienkripsi key1 = kunci yang digunakan untuk algoritma Vigenere cipher key = key1 yang telah diulangi hingga sepanjang plaintext for i=0; iciphertext1.length; i++{ j = i key1.length; key += key1.charAtj; } for i=0; iciphertext1.length; i++{ j = int ciphertext1.charAti; k = int key.charAti; if j = k { pesan = j - 32 - k - 32 95; } else { pesan = j - 32 + 95 - k - 32 95; } pesan += 32; plaintext += char pesan; } Universitas Sumatera Utara 41 4.1.5.2. Proses pengubahan karakter menjadi ASCII Pada proses ini plaintext dan key1 diubah menjadi ASCII. Tabel ASCII yang digunakan untuk mengubah karakter menjadi ASCII ditunjukkan pada Tabel 4.1. Tabel 4.1 Tabel ASCII Char ASCII Char ASCII Char ASCII Char ASCII Char ASCII spasi 32 3 51 F 70 Y 89 l 108 33 4 52 G 71 Z 90 m 109 “ 34 5 53 H 72 [ 91 n 110 35 6 54 I 73 \ 92 o 111 36 7 55 J 74 ] 93 p 112 37 8 56 K 75 94 q 113 38 9 57 L 76 _ 95 r 114 ‘ 39 : 58 M 77 ` 96 s 115 40 ; 59 N 78 a 97 t 116 41 60 O 79 b 98 u 117 42 = 61 P 80 c 99 v 118 + 43 62 Q 81 d 100 w 119 , 44 ? 63 R 82 e 101 x 120 - 45 64 S 83 f 102 y 121 . 46 A 65 T 84 g 103 z 122 47 B 66 U 85 h 104 { 123 48 C 67 V 86 i 105 | 124 1 49 D 68 W 87 j 106 } 125 2 50 E 69 X 88 k 107 ~ 126 Berikut adalah proses pengubahan karakter plaintext dan key1 menjadi ASCII sesuai Tabel 4.1 : = ‘F’ = 70 = ‘I’ = 73 = ‘A’ = 65 = ‘L’ = 76 = ‘I’ = 73 = ‘K’ = 75 = ‘S’ = 83 = ‘O’ = 79 = ‘A’ = 65 = ‘M’ = 77 = ‘L’ = 76 = ‘I’ = 73 = spasi = 32 = ‘L’ = 76 Universitas Sumatera Utara 42 = ‘R’ = 82 = ‘K’ = 75 = ‘I’ = 73 = ‘O’ = 79 = ‘D’ = 68 = ‘M’ = 77 = ‘H’ = 72 = ‘I’ = 73 = ‘O’ = 79 = ‘L’ = 76 4.1.5.3. Proses enkripsi Vigenere cipher Pada proses ini plaintext dienkripsi menjadi ciphertext1 dengan menggunakan kunci yang telah diulangi. Pada penelitian ini, pesan yang digunakan terdiri dari 95 karakter ASCII dari 32 hingga 126, sehingga rumus yang digunakan untuk proses enkripsi yaitu : − 32 = − 32 + − 32 95 atau dapat juga ditulis : = − 32 + − 32 95 + 32 proses enkripsi dilakukan sebagai berikut : = 70 − 32 + 73 − 32 95 + 32 = 111 = 65 − 32 + 76 − 32 95 + 32 = 109 = 73 − 32 + 75 − 32 95 + 32 = 116 = 83 − 32 + 79 − 32 95 + 32 = 35 = 65 − 32 + 77 − 32 95 + 32 = 110 = 76 − 32 + 73 − 32 95 + 32 = 117 = 32 − 32 + 76 − 32 95 + 32 = 76 = 82 − 32 + 75 − 32 95 + 32 = 125 = 73 − 32 + 79 − 32 95 + 32 = 120 = 68 − 32 + 77 − 32 95 + 32 = 113 = 72 − 32 + 73 − 32 95 + 32 = 113 = 79 − 32 + 76 − 32 95 + 32 = 123 4.1.5.4. Proses pengubahan ASCII menjadi karakter Pada proses ini angka ASCII diubah kembali menjadi karakter sesuai Tabel 4.1. Berikut adalah proses pengubahan menjadi karakter : = 111 = ‘o’ = 109 = ‘m’ = 116 = ‘t’ = 35 = ‘’ = 110 = ‘n’ = 117 = ‘u’ = 76 = ‘L’ = 125 = ‘}’ Universitas Sumatera Utara 43 = 120 = ‘x’ = 113 = ‘q’ = 113 = ‘q’ = 123 = ‘{‘ sehingga diperoleh ciphertext1 “omtnuL}xqq{“. 4.1.6. Implementasi enkripsi Myszkowski transposition Pada bagian ini dijelaskan proses implementasi algoritma Myszkowski transposition pada enkripsi. Pesan yang akan dienkripsi yaitu ciphertext1 hasil dari enkripsi algoritma Vigenere cipher. Sebelum melakukan enkripsi, ciphertext1 terlebih dahulu disusun menjadi sebuah matriks. 4.1.6.1. Proses penyusunan matriks Pada proses ini ciphertext1 “omtnuL}xqq{“ disusun menjadi matriks dengan panjang kolom sama dengan panjang key2 “7414”. Sedangkan panjang baris sama dengan pembulatan ke atas dari panjang ciphertext1 setelah dibagi dengan panjang kolom. Berikut adalah proses penyusunan matriks : kolom = panjang key2 = 4 baris = 12 4 ⁄ = 3 ciphertext1 disusun perbarisnya atau dari kiri ke kanan. Matriks enkripsi ciphertext1 dapat dilihat pada Tabel 4.2. Tabel 4.2 Tabel Matriks Enkripsi 7 4 1 4 o M t n U L } x Q q { 4.1.6.2. Proses enkripsi Myszkowski transposition Pada proses ini matriks dibaca sesuai urutan angka dari yang terkecil hingga terbesar perkolomnya atau dari atas ke bawah. Untuk angka yang sama, matriks dibaca perbarisnya atau dari kiri ke kanan. Sehingga diperoleh ciphertext2 “tLqmu}q{onx”. Universitas Sumatera Utara 44 4.1.7. Implementasi dekripsi Myszkowski Transposition Pada bagian ini dijelaskan proses implementasi algoritma Myszkowski transposition pada dekripsi. Pesan yang akan didekripsi yaitu ciphertext2 hasil dari enkripsi algoritma Myszkowski transposition. Proses dekripsi.dilakukan dengan menyusun ciphertext2 kembali menjadi matriks terlebih dahulu. 4.1.7.1. Proses penyusunan matriks Pada proses ini ciphertext2 “tLqmu}q{onx” disusun menjadi matriks dengan panjang kolom sama dengan panjang key2 “7414”. Sedangkan panjang baris sama dengan pembulatan ke atas dari panjang ciphertext1 setelah dibagi dengan panjang kolom. Berikut adalah proses penyusunan matriks : kolom = panjang key2 = 4 baris = 12 4 ⁄ = 3 Ciphertext2 diisi satu-persatu ke dalam matriks perkolomnya sesuai kunci dari yang terkecil hingga terbesar. Untuk angka yang sama ditulis dari kiri ke kanan. Berikut ini adalah proses penyusunan matriks dekripsi. Ciphertext2 “tLq” disusun dari atas ke bawah pada kolom 3 atau kolom kunci 1 terlebih dahulu. Proses ini ditunjukkan pada Tabel 4.3. Tabel 4.3 Tabel Matriks Dekripsi Tahap 1 7 4 1 4 t L q Kemudian, ciphertext2 “mu}q{” disusun dari kiri ke kanan pada kolom 2 dan 4 atau kolom kunci 4. Proses ini ditunjukkan pada Tabel 4.4. Universitas Sumatera Utara 45 Tabel 4.4 Tabel Matriks Dekripsi Tahap 2 7 4 1 4 m t u L } q q { Selanjutnya, ciphertext2 yang tersisa “onx” disusun dari atas ke bawah pada kolom 1 atau kolom kunci 7. Proses ini ditunjukkan pada Tabel 4.5. Tabel 4.5 Tabel Matriks Dekripsi Tahap 3 7 4 1 4 o m t n u L } x q q { 4.1.7.2. Proses dekripsi Myszkowski transposition Pada proses ini dilakukan pembacaan matriks setelah matriks disusun seperti Tabel 4.5. Pembacaan matriks dilakukan perbarisnya atau dari kiri ke kanan, sehingga diperoleh ciphertext1 “omtnuL}xqq{“. 4.1.8. Implementasi dekripsi Vigenere cipher Pada bagian ini dijelaskan proses implementasi algoritma Vigenere cipher pada dekripsi. Sebelum melakukan enkripsi, kunci yang digunakan terlebih dahulu diulangi hingga memiliki panjang yang sama dengan ciphertext1. 4.1.8.1. Proses pengulangan kunci Pada proses ini, key1 “ILKOM” diulangi hingga memiliki panjang yang sama dengan ciphertext1 “omtnuL}xqq{“.. Berikut adalah proses pengulangan kunci untuk algoritma Vigenere cipher : ciphertext1 : “omtnuL}xqq{“ key1 : “ILKOM” key : “ILKOMILKOMIL” Universitas Sumatera Utara 46 Keterangan : ciphertext1 = pesan yang akan didekripsi key1 = kunci yang digunakan untuk algoritma Vigenere cipher key = key1 yang telah diulangi hingga sepanjang plaintext 4.1.8.2. Proses pengubahan karakter menjadi ASCII Pada proses ini plaintext dan key1 diubah menjadi ASCII. Berikut adalah proses pengubahan karakter ciphertext1 dan key1 menjadi ASCII sesuai Tabel 4.1. = ‘o’ = 111 = ‘I’ = 73 = ‘m’ = 109 = ‘L’ = 76 = ‘t’ = 116 = ‘K’ = 75 = ‘’ = 35 = ‘O’ = 79 = ‘n’ = 110 = ‘M’ = 77 = ‘u’ = 117 = ‘I’ = 73 = ‘L’ = 76 = ‘L’ = 76 = ‘}’ = 125 = ‘K’ = 75 = ‘x’ = 120 = ‘O’ = 79 = ‘q’ = 113 = ‘M’ = 77 = ‘q’ = 113 = ‘I’ = 73 = ‘{‘ = 123 = ‘L’ = 76 4.1.8.3. Proses dekripsi Vigenere cipher Pada proses ini ciphertext1 didekripsi menjadi plaintext dengan menggunakan kunci yang telah diulangi. Rumus yang digunakan untuk proses dekripsi yaitu : − 32 = − 32 − − 32 95; untuk ≥ − 32 = − 32 + 95 − − 32 95; untuk atau dapat juga ditulis : = − 32 − − 32 95 + 32; untuk ≥ = − 32 + 95 − − 32 95 + 32; untuk proses dekripsi dilakukan sebagai berikut : = 111 − 32 − 73 − 32 95 + 32 = 70 = 109 − 32 − 76 − 32 95 + 32 = 65 = 116 − 32 − 75 − 32 95 + 32 = 73 = 35 − 32 + 95 − 79 − 32 95 + 32 = 83 = 110 − 32 − 77 − 32 95 + 32 = 65 = 117 − 32 − 73 − 32 95 + 32 = 76 = 76 − 32 − 76 − 32 95 + 32 = 32 = 125 − 32 − 75 − 32 95 + 32 = 82 = 120 − 32 − 79 − 32 95 + 32 = 73 Universitas Sumatera Utara 47 = 113 − 32 − 77 − 32 95 + 32 = 68 = 113 − 32 − 73 − 32 95 + 32 = 72 = 123 − 32 − 76 − 32 95 + 32 = 79 4.1.8.4. Proses pengubahan ASCII menjadi karakter Pada proses ini angka ASCII diubah kembali menjadi karakter sesuai Tabel 4.1. Berikut adalah proses pengubahan menjadi karakter : = 70 = ‘F’ = 65 = ‘A’ = 73 = ‘I’ = 83 = ‘S’ = 65 = ‘A’ = 76 = ‘L’ = 32 = spasi = 82 = ‘R’ = 73 = ‘I’ = 68 = ‘D’ = 72 = ‘H’ = 79 = ‘O’ sehingga diperoleh plaintext “FAISAL RIDHO”.

4.2. Pengujian