Implementasi Algoritma Knapsack dan Algoritma Boldi-Vigna (ζ4) Pada Keamanan dan Kompresi File Teks

(1)

LISTING PROGRAM

1. Knapsack

public class Classknapsack{

void Btn_KRClick(object sender, EventArgs e) { richTextBox1.Text = null;

int distance = Convert.ToInt32(textDistance.Text); int inc = 0,temp;

w[0] = Convert.ToInt32(textW1.Text); w[1] = Convert.ToInt32(textW2.Text); temp = w[0] + w[1];

for (int i = 2; i < w.Length -1; i++){ w[i] = distance + inc + temp;

inc++;

temp = temp + w[i]; }

w[7] = distance + temp;

for (int i = 0; i < w.Length; i++){

richTextBox1.Text = richTextBox1.Text + w[i] + "\n"; }

}

public static int[] GetPublicKey(int[] w, int q, int r){ int[] beta = new int[w.Length];

for(int i = 0; i < w.Length; i++) beta[i] = w[i] * r % q; return beta;

}

public static int[] Encrypt(string plainText, int[] beta){ if (String.IsNullOrEmpty(plainText)) return null; int[] encoded = new int[plainText.Length];

for(int i = 0; i < encoded.Length; i++){

string bin = ConvertToBinary(plainText[i]); int sum = 0;

for(int j = 0; j < 8; j++) sum += (bin[j] - 48) * beta[j]; encoded[i] = sum;

}

return encoded; }

public static string Decrypt(int[] encoded, int[] w, int q,int r{

if (encoded == null || encoded.Length == 0) return null; char[] chars = new char[encoded.Length];

int mir = ModInverse(r, q); if (mir == 0) {

Console.WriteLine("Modular inverse does not exist. Decryption aborted");

return null; }


(2)

for(int i = 0; i < encoded.Length; i++){ char[] bin = new char[8];

for(int j = 0; j < 8; j++) bin[j] = '0'; int temp = encoded[i] * mir % q; while(temp > 0) {

int index = 7;

for(int j = 1; j < w.Length; j++){ if(w[j] > temp) {

index = j - 1; break;

} }

bin[index] = '1'; temp -= w[index];

}

chars[i] = ConvertFromBinary(new string(bin)); }

return new string(chars); }

public static int ModInverse(int r, int q) { int i = q, v = 0, d = 1;

while (r > 0) { int t = i/r, x = r; r = i % x; i = x; x = d;

d = v - t * x; v = x;

}

v %= q;

if (v < 0) v = (v+q) % q; return v;

} }

//Pemanggilan class Knapsack

void Btn_KPClick(object sender, EventArgs e) { richTextBox2.Text = null;

m = Convert.ToInt32(textm.Text); n = Convert.ToInt32(textn.Text); if(n>50)

MessageBox.Show("n harus lebih kecil dari 51"); else{

int mir = Classknapsack.ModInverse(n, m); if (mir == 0) {

MessageBox.Show("syarat m dan n tidak memenuhi"); }

else{

beta = Classknapsack.GetPublicKey(w, m, n); for (int i = 0; i < w.Length; i++){

richTextBox2.Text = richTextBox2.Text + beta[i] + "\n"; }


(3)

} }

void Btn_generateClick(object sender, EventArgs e) { int temp = 0;

for (int i = 0; i < w.Length; i++){ temp = temp + w[i];

}

textm.Text = (temp + 5).ToString(); }

void Button1Click(object sender, EventArgs e) {

richTextBox4.Text = null; watch.Start();

int[] encoded =

Classknapsack.Encrypt(richTextBox1.Text, beta); watch.Stop();

for(int i = 0;i<encoded.Length;i++) richTextBox4.Text =

richTextBox4.Text + encoded[i].ToString() + "\n"; textBox5.Text =

Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4) .ToString()+" s";

textBox6.Text = richTextBox4.Text.Length.ToString(); MessageBox.Show("file berhasil dienkripsi");

}

void Btn_DekomdekClick(object sender, EventArgs e) {

richTextBox3.Text = null; watch.Start();

string[] encodeds = richTextBox4.Text.Split((Char)10); int[] encoded = Array.ConvertAll(encodeds, int.Parse); string decoded = Classknapsack.Decrypt(encoded, w, m, n); watch.Stop();

richTextBox3.Text = decoded.ToString(); textBox5.Text =

Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4) .ToString()+" s";

textBox6.Text = richTextBox3.Text.Length.ToString(); MessageBox.Show("file berhasil didekripsi"); }


(4)

2. Boldi Vigna

public class classboldivigna {

public static int[] fr; public static String cs;

public static String[] bolvig; public static String[] tabelbolvig

= {"1000","10010","10011","10100","10101","10110","10111", "11000","11001","11010","11011","11100","11101","11110", "11111","010000111","010001000","010001001","010001010", "010001011","010001100","010001101","010001110","010001111", "010010000","010010001","010010010","010010011","010010100", "010010101","010010110","010010111","010011000","010011001", "010011010","010011011"};

public static int[] CountFreq(String st) {

String charset = GetCharSet(st); int n = charset.Length;

int[] freq = new int[n]; for (int i = 0; i < n; i++)

freq[i] = CountChar(st, charset[i]); return freq;

}

public static String GetCharSet(String st) { StringBuilder s = new StringBuilder(); int n = st.Length;

for (int i = 0; i < n; i++){ char c = st[i];

if (s.ToString().IndexOf(c) == -1) s.Append(c);

}

return s.ToString(); }

public static void InsertionSort(int[] freq, String charset){ fr = freq;

cs = charset;

int n = charset.Length;

StringBuilder sb = new StringBuilder(charset); for (int i = 1; i < n; i++)

for (int j = 0; j < i; j++) if (fr[i] > fr[j]) { int frtemp = fr[i];

fr[i] = fr[j]; fr[j] = frtemp;

char sbtemp = sb[i]; sb[i] = sb[j]; sb[j] = sbtemp; }

cs = sb.ToString(); }


(5)

public static void boldivigna(String st) {

int[] freq = CountFreq(st);

String charset = GetCharSet(st); int t = charset.Length;

InsertionSort(freq, charset); freq = fr;

charset = cs;

bolvig = new String[t];

for (int i = 0; i < t; i++){ bolvig[i] = tabelbolvig[i]; }

}

//Pemanggilan Class Boldi-Vigna

void Button3Click(object sender, EventArgs e) { watch.Start();

String dc = classboldivigna.Decode(richTextBox1.Text); String ds = classboldivigna.Decompress(dc, cs, bolvig); richTextBox4.Text = ds.Substring(0,ds.Length-1);

watch.Stop(); textBox7.Text =

Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4 ).ToString()+" s";

textBox8.Text = richTextBox4.Text.Length.ToString();

MessageBox.Show("file berhasil didekompresi"); }

void Btn_enkomClick(object sender, EventArgs e) {

richTextBox3.Text = null; watch.Start();

String kalimat = richTextBox4.Text; classboldivigna.boldivigna(kalimat); String stb =

classboldivigna.StringToStb(kalimat,classboldivigna.cs,classbol divigna.bolvig);

String code = classboldivigna.Encode(stb); watch.Stop();

richTextBox3.Text = code; textBox3.Text =

Math.Round(Convert.ToDecimal(watch.ElapsedMilliseconds)/1000,4) .ToString()+" s";

textBox4.Text = richTextBox3.Text.Length.ToString(); MessageBox.Show("file berhasil dikompresi");


(6)

CURRICULUM VITAE

1. Biodata

2. Riwayat Pendidikan

2012 – 2016 : S1 Ilmu Komputer Universitas Sumatera Utara, Medan 2009 – 2012 : SMA Negeri 2 Rantau Selatan

2006 – 2009 : SMP Swasta Muhammadiyah-35 Sigambal 2000 – 2006 : SD Negeri 114376 Kebun Sayur

3. Keahlian

Pemrograman : C#, MATLAB

Database : MySql

Design : Photoshop, Corel Draw Perkantoran : Microsoft Office

4. Pengalaman Organisasi

[2012 – 2013] : Anggota Himpunan Mahasiswa Labuhanbatu [2012 – 2014] : Anggota Ikatan Mahasiswa Ilmu Komputer

Nama : Erna Lestari

Nim : 121401024

Alamat Sekarang : Jln. Air Bersih Ujung, Perumahan D’Green Townhouse no.3, Medan

Alamat Orang Tua : Lingk.Kebun Sayur, Sigambal, Rantau Selatan


(7)

6. Seminar

[2014] : Seminar Internasional Youth Convention

[2014] : Seminar Nasional Literasi Informasi “SENARAI” [2015] : Seminar Sosialisasi Toward ASEAN Community 2015:

ASEAN Goes to Campus


(8)

DAFTAR PUSTAKA

Chandra, A.J. 2006. Analisa Perbandingan Kinerja Algoritma Kompresi Huffman, LZW (Lempel-Ziv-Welch) dan DMC (Dynamic Markov Compressions). Skripsi.Universitas Kristen Petra

Denning, D.E.R. 1982. Cryptography And Data Security. London : Addison-Wesley Hayati, D. 2013. Implementasi Pengamanan File Text dengan Algoritma Kriptografi

Knapsack dan Algoritma Steganografi FOF (First of File). Skripsi. Universitas Sumatera Utara

Indra, R. 2009. Kompresi Data dengan Algoritma Huffman dan Perbandingannya dengan Algoritma LZW dan DMC. Makalah. Teknik Informatika Institut Teknologi Bandung

Kandaga, T. 2011.Analisis Penerapan Kompresi dan Dekompresi Data dengan Menggunakan Metode Statistik dan Kamus. Vol. 2 No.2, Desember 2006. Hal 81-91. Bandung. Jurusan Teknik Informatika, Universitas Kristen Maranatha Pattiasina, T.J. 2014. Rancang Bangun Aplikasi Enkripsi dan Dekripsi Email Dengan

Menggunakan Algoritma Advanced Encryption Standard Dan Knapsack. Jurnal Teknika. Institut Informatika Indonesia

Raharjo, B. 2015. Mudah Belajar C#. Informatika bandung. Bandung

Sadikin, R. 2012. Kriptografi untuk Keamanan Jaringan dan Implementasinya dalam Bahasa Java.Andi Offset. Yogyakarta

Saleh, R.H. 2015. Perancangan Perangkat Lunak Pengamanan File Text Menggunakan Algoritma El Gamal Dan Kompresi File Text Menggunakan Algoritma Huffman. Skripsi. Universitas Sumatera Utara

Salomon, D. 2007. Variable-Length Codes For Data Compression.London:Springer Solihin, M. 2013. Perancangan Sistem Pengamanan Dan Kompresi data Teks dengan

Fibonacci Encoding dan Algoritma Shannon-Fano serta Algoritma Deflate. Skripsi. Universitas Sumatera Utara

Tanjung, N.L.U. 2013. Anilisis Kombinasi Algoritma Knapsack dan RLE pada File Teks. Skripsi. Universitas Sumatera Utara


(9)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Sebelum dilakukan tahap perancangan, perlu dilakukan analisis sistem yang akan dibangun. Analisis sistem merupakan istilah yang secara kolektif mendeskripsikan fase-fase awal pengembangan sistem. Analisis sistem pada dasarnya merupakan tahapan yang ditunjukan untuk menciptakan pemahaman yang menyeluruh terhadap sistem sehingga diperoleh gambaran tentang kebutuhan, cara kerja dan alur data yang akan dikerjakan sistem. Hal ini akan membantu mempermudah dalam proses implementasi sistem.

3.1.1 Analisis Masalah

Dengan sistem ini, masalah yang akan diselesaikan adalah pengamanan data teks dari pihak yang tidak memiliki hak aksas data tersebut. Dalam sistem ini file teks akan dienkripsi menggunakan algoritma Knapsack. Selanjutnya untuk kompresi data teks, dilakukan dengan menggunakan algoritma Boldi-Vigna (ζ4). Sehingga diharapkan file teks ini terjaga keamanannya serta ukuran file dapat lebih kecil dari sebelumnya.

Yang menjadi masalah utama penelitian ini adalah bagaimana mengkombinasikan algoritma knapsack dan Boldi-Vigna (ζ4) pada file teks. Sehingga diharapkan file teks ini terjaga keamanannya serta ukuran file dapat lebih kecil dari sebelumnya. Setelah dipilah dan dibagi kedalam beberapa kategori, dapat diuraikan sebagai berikut:

1. User adalah seorang yang melakukan proses bangkit kunci, enkripsi dan kompresi serta dekompresi dan dekripsi.

2. Proses : Sistem ini akan berjalan mengkombinasikan kedua algoritma Knapsack dan Boldi-Vigna (ζ4) pada file teks yaitu proses Enkripsi kemudian Kompresi atau Dekompresi kemudian Dekripsi.

3. Sistem : Sistem ini menunjukkan kombinasi antara algoritma Knapsack dan algoritma Boldi-vigna (ζ4) apakah menghasilkan hasil yang baik.


(10)

Selanjutnya masalah diuraikan kedalam bentuk Diagram Tulang Ikan (Ishikawa Diagram) dapat dilihat pada gambar 3.1 dibawah ini :

Gambar 3.1 Diagram Ishikawa Untuk Analisis Permasalahan Sistem

3.1.2 Analisis Persyaratan

Analisis ini bertujuan untuk mengidentifikasi dan menyatakan apa saja yang akan dibutuhkan oleh sistem agar dapat berjalan sesuai dengan yang diharapkan. Analisis persyaratan dibagi menjadi dua bagian yaitu persyaratan fungsional (functional requirement) dan persyaratan nonfungsional (nonfunctional requirement). Dimana Persyaratan fungsional merupakan deskripsi mengenai aktivitas dan layanan yang harus diberikan atau disediakan oleh sebuah sistem, dan persyaratan nonfungsional merupakan deskripsi mengenai fitur, karakteristik, dan batasan lainnya yang menentukan apakah sistem memuaskan atau tidak. Persyaratan nonfungsional seringkali berupa batasan atau sesuatu yang menjadi perhatian stakeholder sebuah sistem.


(11)

a. Persyaratan fungsional

Persyaratan fungsional yang harus dipenuhi oleh sistem yang akan dibangun ini adalah :

1. Sistem ini harus mampu membaca file teks berupa *.txt dan *.doc.

2. Sistem ini akan membangkitkan bilangan bulat positif pada pembuatan kunci algoritma Knapsack.

3. Sistem ini akan menghasilkan file teks hasil kompresi berupa *.bv. 4. Sistem ini akan menyimpan kunci kriptografi dalam bentuk *.key.

b. Persyaratan nonfungsional 1. Performa

Sistem yang akan dibangun harus dapat menunjukkan hasil dari kompresi dan enkripsi serta dekompresi dan dekripsi.

2. Mudah dipelajari dan digunakan

Sistem yang dibangun harus sederhana dan agar mudah dipelajari dan digunakan oleh pengguna (user)

3. Hemat biaya

Sistem ini tidak memerlukan perangkat tambahan maupun sistem pendukung dalam penggunaannya.

4. Dokumentasi

Sistem dapat menyimpan file teks yang didekripsi dan kompresi, dekompresi dan enkripsi serta kunci yang dibangkitkan.

5. Manajemen kualitas

sistem memiliki kualitas yang baik yaitu proses enkripsi dan kompresi, dekompresi dan dekripsi file teks dan membangkitkan kunci relatif cepat.

3.1.3 Pemodelan Sistem

Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang objek apa saja yang akan berinteraksi dengan sistem serta hal-hal apa saja yang harus dilakukan oleh sebuah sistem. Aktor yang nantinya akan berinteraksi dengan sistem adalah user yang akan menggunakan sistem yang akan dibangun.


(12)

Berikut ini adalah diagram use case yang dirancang sebagai pemodelan persyaratan sistem berdasarkan informasi kebutuhan sistem dan aktor yang berperan didalamnya. a. Use case diagram

Gambar 3.2 Use Case Diagram Pada Sistem

Use case diagram pada gambar 3.2 menjelaskan bahwa sistem dapat diakses oleh seorang aktor yang dinamakan pengguna. Terdapat tiga use case utama yaitu Bangkit Kunci, Enkripsi dan kompresi serta Dekompresi dan Dekripsi.

b. Activity Diagram

Activity diagram menggambarkan berbagai alur aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alur berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Berikut ini adalah diagram Activity pada sistem yang akan dibangun.

Pada proses bangkit kunci, aktivitas yang berlangsung dapat dilihat pada gambar activity diagram 3.3


(13)

Gambar 3.3 Activity Diagram Bangkit Kunci

Activity diagram menggambarkan interaksi aktifitas antara pengguna sistem secara detil dan berurut. Pada Gambar 3.3 kotak paling kiri merupakan aktifitas yang dilakukan oleh pengguna, sedangkan kotak sebelah kanan adalah respon yang diberikan sistem terhadap aktifitas yang dilakukan pengguna terhadap sistem.


(14)

Gambar 3.4 Activity Diagram Enkripsi Dan Kompresi

Activity diagram menggambarkan interaksi aktifitas antara pengguna sistem secara detil dan berurut. Pada Gambar 3.4 kotak paling kiri merupakan aktifitas yang dilakukan oleh pengguna, sedangkan kotak sebelah kanan adalah respon yang diberikan sistem terhadap aktifitas yang dilakukan pengguna terhadap sistem.


(15)

Gambar 3.5 Activity Diagram Dekompresi Dan Dekripsi

Activity diagram menggambarkan interaksi aktifitas antara pengguna sistem secara detil dan berurut. Pada Gambar 3.5 kotak paling kiri merupakan aktifitas yang dilakukan oleh pengguna, sedangkan kotak sebelah kanan adalah respon yang diberikan sistem terhadap aktifitas yang dilakukan pengguna terhadap sistem.

c. Sequence Diagram

Proses enkripsi plaintext menggunakan algoritma Knapsack yang dilakukan oleh sistem membangkitkan kunci terlebih dahulu kemudian dapat mengenkripsi plaintext. Kemudian sistem akan mengecek kebutuhan data dan proses yang akan dilakukan selanjutnya. Sequence Diagram untuk sistem dilihat pada gambar 3.6, 3.7 dan 3.8 dihalaman berikutnya :


(16)

(17)

Gambar 3.8 Sequence Diagram Dekompresi Dan Dekripsi

3.1.4 Flowchart

3.1.4.1 Flowchart sistem secara umum

a. Flowchart Enkripsi dan Dekripsi dapat dilihat pada gambar 3.9 dihalaman berikutnya :


(18)

Mulai

Input file *.txt atau *.doc

Ciphertext Enkripsi dengan metode

Knapsack

Kompresi dengan metode Boldi-Vigna (ζ4)

Hasil Kompresi

Selesai


(19)

b. Flowchart Dekompresi dan Dekripsi dapat dilihat pada gambar 3.10 dibawah ini :

Mulai

Masukkan Hasil Dari Enkripsi Dan

Kompresi

Hasil Dekompresi Dekompresi Dengan Metode Boldi-Vigna (ζ4)

Dekripsi Dengan Metode

Knapsack Plaintext

Selesai

Gambar 3.10 Flowchart Dekompresi Dan Dekripsi

3.1.4.2 Flowchart proses Algoritma Knapsack


(20)

Start

Input w (1) . w (2) Distance

Hitung Deret Superincreasing / Kunci

Rahasia

Input n

End

Hitung Kunci Publik w (kr) . n mod m

Input m

m > Jumlah Kunci Rahasia

GCD (m,n) =1 Ya

Ya

Tidak

Tidak

Gambar 3.11 Flowchart Bangkit Kunci

b. Flowchart Enkripsi

Flowchart proses enkripsi dengan metode Knapsack dapat dilihat pada gambar 3.12 dihalaman berikutnya :


(21)

Start

Input Plaintext

Input Kunci Publik

Konversi Kode ASCII Plainteks Ke Biner

Hitung Kriptogram

Ciphertext

End

Gambar 3.12 Flowchart Enkripsi

c. Flowchart Dekripsi

Flowchart proses dekripsi dengan metode Knapsack dapat dilihat pada gambar 3.13 pada halaman berikutnya :


(22)

Start

Input Ciphertext

Input Kunci Rahasia

Tentukan Nilai n-¹ Dan k (1+m . k) / n

Dekripsi

Hasil Dekripsi

End

Ubah Posisi Bit Sesuai Posisi Key (Index)

Kode Biner Di Ubah Ke Karakter ASCII

Plaintext


(23)

3.1.4.3 Flowchart proses Boldi-Vigna(ζ4).

a. Flowchart Kompresi

Flowchart proses kompresi dengan metode Boldi-Vigna (ζ4). dapat dilihat pada gambar 3.14 dibawah ini :

Start

Input File Teks (*.txt Atau *.doc)

Ubah Isi File Menjadi Bilangan ASCII

End

Kompresi Dengan Boldi Vigna (ζ4)

Hasil Kompresi

Gambar 3.14 Flowchart Kompresi

b. Flowchart Dekompresi

Flowchart Dekompresi dengan metode Boldi-Vigna (ζ4) dapat dilihat pada gambar 3.15 pada halaman berikutnya:


(24)

Start

Input File Kompresi (*.bv)

Ubah Menjadi Bilangan ASCII

End Dekompresi

Hasil Plaintext

Gambar 3.15 Flowchart Dekompresi

3.2 Perancangan Interface

Pada perancangan sistem terdapat pembuatan Graphic User Interface (GUI) yang akan mempermudah user dalam menggunakan sistem yang ada. Pada sistem, terdapat 5 buah Form yang akan ditampilkan antara lain Form Beranda, Form Menu yang di dalamnya terdapat tiga Form yaitu Bangkit Kunci, Enkripsi dan Kompresi,

Dekompresi dan Dekripsi, Form Bantuan, Form Tentang dan Form Keluar. a. Form Beranda

Pada halaman Beranda terdapat keterangan dari sistem yaitu judul skripsi yang dibuat, logo universitas dan nama. Form beranda dapat kita lihat pada gambar 3.16 pada halaman berikutnya:


(25)

Gambar 3.16 Form Beranda Keterangan :

1. Tab Beranda

Berguna untuk menampilkan tampilan beranda pada sistem yang ada. 2. Tab Menu

Berguna untuk menampilkan menu yang bisa kita pilih pada sistem. 3. Tab Bantuan

Berguna untuk menampilkan menu bantuan pada sistem yang ada. 4. Tab Tentang

Berguna untuk menampilkan menu tentang pada sistem yang ada. 5. Tab Keluar

Berguna untuk keluar dari sistem. 6. Label Text

Berisi Judul skripsi yang dibuat. 7. Picture Box


(26)

8. Label Text

Berisi keterangan mengenai sistem.

b. Form Menu

Pada Form menu berisi tiga tab yaitu Bangkit Kunci, Enkripsi dan Kompresi, Dekompresi dan Dekripsi. Untuk melihat tampilan Menu dapat dilihat pada gambar 3.17 dibawah ini :

Gambar 3.17 Form Menu

Keterangan : 1. Tab Beranda

Berguna untuk menampilkan tampilan beranda pada sistem yang ada. 2. Tab Menu

Berguna untuk menampilkan menu yang bisa kita pilih pada sistem. 3. Tab Bantuan


(27)

4. Tab Tentang

Berguna untuk menampilkan menu tentang pada sistem yang ada. 5. Tab Keluar

Berguna untuk keluar dari sistem. 6. Tab Bangkit Kunci

Berguna untuk menampilkan menu Bangkit Kunci pada sistem yang ada. 7. Tab Enkripsi dan Kompresi

Berguna untuk menampilkan menu Enkripsi dan Kompresi pada sistem yang ada.

8. Tab Dekompresi dan Dekripsi

Berguna untuk menampilkan menu Dekompresi dan Dekripsi pada sistem yang ada.

d. Form bangkit kunci

Pada Form bangkit kunci terdapat beberapa button dan text box yang akan digunakan untuk melakukan bangkit kunci. Form Bangkit Kunci dapat kita lihat pada gambar 3.18 dibawah ini :


(28)

Keterangan :

1. Tab Beranda

Berguna untuk menampilkan tampilan beranda pada sistem yang ada. 2. Tab Menu

Berguna untuk menampilkan menu yang bisa kita pilih pada sistem. 3. Tab Bantuan

Berguna untuk menampilkan menu bantuan pada sistem yang ada. 4. Tab Tentang

Berguna untuk menampilkan menu tentang pada sistem yang ada. 5. Tab Keluar

Berguna untuk keluar dari sistem. 6. Group Box

Berguna untuk mengelompokkan button dan Text box pada sistem. 7. Text box

Berguna untuk mengambil nilai bangkit kunci yang akan di input oleh user. 8. Button Generate

Berguna untuk menghasilkan nilai bangkit kunci. 9. Button Simpan

Berguna untuk menyimpan file teks. 10.Button Bersih

Berguna untuk menghapus data yang telah di input dan menjadikan nya default. 11.Button kembali

Berguna untuk kembali ke menu utama. 12.Label

Berguna untuk memberi nama pada sistem. 13.Text box

Berguna untuk menampilkan barisan nilai kunci rahasia dan kunci publik.

e. Form Enkripsi dan Kompresi

Pada Form Enkripsi dan Kompresi terdapat beberapa button dan text box yang akan digunakan untuk melakukan bangkit kunci. Form Bangkit Kunci dapat kita lihat pada gambar 3.19 pada halaman berikutnya:


(29)

Gambar 3.19 Form Enkripsi dan Kompresi Keterangan :

1. Tab Beranda

Berguna untuk menampilkan tampilan beranda pada sistem yang ada. 2. Tab Menu

Berguna untuk menampilkan menu yang bisa kita pilih pada sistem. 3. Tab Bantuan

Berguna untuk menampilkan menu bantuan pada sistem yang ada. 4. Tab Tentang

Berguna untuk menampilkan menu tentang pada sistem yang ada. 5. Tab Keluar

Berguna untuk keluar dari sistem. 6. Group Box

Berguna untuk mengelompokkan button dan Text box pada sistem. 7. Button Pilih Teks


(30)

8. Text box

Berisi informasi dari file teks yang diinput. 9. Button Load Kunci

Berguna untuk mengambil bilangan kunci. 10.Text box

Berisi informasi dari load kunci. 11.Button Enkripsi

Berguna untuk mengenkripsi data teks yang di input. 12.Text box

Berisi informasi dari hasil enkripsi. 13.Button Enkripsi dan Kompresi

Berguna untuk mengenkripsi dan mengkompresi file yang telah di input pada sistem.

14.Text box

Berisi informasi dari hasil enkripsi dan kompresi. 15.Button Simpan

Berguna untuk menyimpan file teks hasil enkripsi dan kompresi. 16.Button Bersih

Berguna untuk menghapus data yang telah di input dan menjadikan nya default. 17.Button kembali

Berguna untuk kembali ke menu utama.

f. Form Dekompresi dan Dekripsi

Pada Form Enkripsi dan Kompresi terdapat beberapa button dan text box yang akan digunakan untuk melakukan bangkit kunci. Form Bangkit Kunci dapat kita lihat pada gambar 3.20 pada halaman berikutnya:


(31)

Gambar 3.20 Form Dekompresi Dan Dekripsi

Keterangan : 1. Tab Beranda

Berguna untuk menampilkan tampilan beranda pada sistem yang ada. 2. Tab Menu

Berguna untuk menampilkan menu yang bisa kita pilih pada sistem. 3. Tab Bantuan

Berguna untuk menampilkan menu bantuan pada sistem yang ada. 4. Tab Tentang

Berguna untuk menampilkan menu tentang pada sistem yang ada. 5. Tab Keluar

Berguna untuk keluar dari sistem. 6. Button Pilih Teks


(32)

7. Group Box

Berguna untuk mengelompokkan button dan Text Box pada sistem. 8. Text box

Berisi informasi dari file teks yang diinput. 9. Button Dekompresi

Berguna untuk mendekompresi file teks yang telah diinput. 10.Text box

Berisi informasi dari hasil dekompresi. 11.Button Load Kunci

Berguna untuk mengambil bilangan kunci. 12.Text box

Berisi informasi dari load kunci. 13.Button Dekompresi dan Dekripsi

Berguna untuk mendekompresi dan mendekripsi file yang telah di input pada sistem.

14.Text box

Berisi informasi dari hasil dekompresi dan dekripsi. 15.Button Simpan

Berguna untuk menyimpan file teks hasil dekompresi dan dekripsi. 16.Button Bersih

Berguna untuk menghapus data yang telah di input dan menjadikan nya default. 17.Button kembali

Berguna untuk kembali ke menu utama.

g. Form Bantuan

Pada Form Bantuan terdapat beberapa button dan grup box yang berisi

keterangan untuk membantu user menggunakan sistem yang ada. Form Bantuan dapat kita lihat pada gambar 3.21 pada halaman berikutnya:


(33)

Gambar 3.21 Form Bantuan

Keterangan : 1. Tab Beranda

Berguna untuk menampilkan tampilan beranda pada sistem yang ada. 2. Tab Menu

Berguna untuk menampilkan menu yang bisa kita pilih pada sistem. 3. Tab Bantuan

Berguna untuk menampilkan menu bantuan pada sistem yang ada. 4. Tab Tentang

Berguna untuk menampilkan menu tentang pada sistem yang ada. 5. Tab Keluar

Berguna untuk keluar dari sistem. 6. Grup Box

Berguna untuk mengelompokkan informasi tentang bantuan menjalankan sistem.


(34)

h. Form Tentang

Pada Form Tentang terdapat beberapa button dan grup box yang berisi keterangan untuk membantu user menggunakan sistem yang ada. Form Tentang dapat kita lihat pada gambar 3.22 dibawah ini :

Gambar 3.22 Form Tentang

Keterangan :

1. Tab Beranda

Berguna untuk menampilkan tampilan beranda pada sistem yang ada. 2. Tab Menu

Berguna untuk menampilkan menu yang bisa kita pilih pada sistem. 3. Tab Bantuan

Berguna untuk menampilkan menu bantuan pada sistem yang ada. 4. Tab Tentang


(35)

5. Tab Keluar

Berguna untuk keluar dari sistem. 6. PictureBox

Berguna untuk meletakkan foto dalam format *.PNG. 7. GrupBox

Berguna untuk mengelompokkan informasi tentang bantuan menjalankan sistem.


(36)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

Tahap implementasi sistem dilakukan setelah tahap analisis dan perancangan sistem selesai dilakukan. Tahap ini merupakan tahapan penerjemahan sistem kedalam bahasa pemrograman atau yang lebih sering disebut sebagai pengkodean. Sistem ini akan diimplementasikan pada bahasa C# dengan menggunakan Sharp Develop 4.3. Sistem ini memiliki 4 Form Utama, yaitu Form Beranda, Form Menu, Form Tentang, dan Form Bantuan. Form Menu memiliki 3 Form turunan, yaitu Form Bangkit Kunci, Form Enkripsi, Form Enkripsi dan Kompresi, dan Form Dekompresi dan Dekripsi.

4.1.1 Proses tahapan Algoritma Knapsack dan Boldi-Vigna (ζ4) 4.1.1.1 Proses Bangkit Kunci

Untuk menentuikan barisan kunci rahasia harus memasukkan parameter sebagai berikut :

W (1) = 2 W (2) = 3 Distance = 2

Parameter tersebut kemudian dimasukkan kedalam rumus berikut :

W(3) = (distance) + W(1) + W(2)

W(4) = (distance + 1) + W(1) + W(2) + W(3)

W(5) = (distance + 2) + W(1) + W(2) + W(3) + W(4)

W(6) = (distance + 3) + W(1) + W(2) + W(3) + W(4) + W(5)

W(7) = (distance + 2) + W(1) + W(2) + W(3) + W(4) + W(5) + W(6) W(8) = (distance) + W(1) + W(2) + W(3) + W(4) + W(5) + W(6) + W(7)


(37)

Dimana nilai awal itu adalah W(1) = 2. Sehingga didapat : W(3) = 2 +2 + 3 = 7

W(4) = (2+1) + 2 + 3 + 7 = 15 W(5) = (2+2) + 2 + 3 + 7 + 15 = 31 W(6) = (2+3) + 2 + 3 + 7 + 15 + 31 = 63 W(7) = (2+4) + 2 + 3 + 7 + 15 + 31 + 63 = 127 W(8) = (2) + 2 + 3 + 7 + 15 + 31 + 63 + 127 = 250

Maka dari perhitungan berikut didapatkan bahwa kunci rahasia adalah 2, 3, 7, 15, 31, 63, 127, 250

Untuk menentukan barisan Kunci publik , tentukan nilai Modulus m yaitu angka yang lebih besar dari jumlah semua elemen didalam barisan dan nilai n yaitu nilai yang tidak mempunyai persekutan terhadap m. Pada sistem ini nilai m dibangkitkan secara acak :

m = 531 n = 4

dihitung menggunakan rumus: Kp = w(Kr).n mod m

Keterangan:

Kp = barisan Kunci Publik

w(Kr) = nilai setiap barisan kunci rahasia Sehingga didapat :

(2.4) mod 503 = 8 (3.4) mod 503 = 12 (7.4) mod 503 = 28 (15.4) mod 503 = 60 (31.4) mod 503 = 124 (63.4) mod 503 = 252 (127.4) mod 503 = 5 ((250.4) mod 503 = 497


(38)

4.1.1.2 Proses Enkripsi dan Kompresi

Proses awal tahap ini adalah enkripsi terlebih dahulu kemudian kompresi. Misal : Plaintext = ERNA LESTARI

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497 Kunci rahasia = 2, 3, 7, 15, 31, 63, 127, 250

m = 503

n = 4

n-1 = 133

Enkripsi Plaintext

Blok Plaintext ke-1 = 01000101 = E

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497

Kriptogram = (1 x 12) + (1 x 252) + (1 x 497) = 761

Blok Plaintext ke-2 = 01010010 = R

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497 Kriptogram = (1 x 12) + (1 x 60) + (1 x 5) = 77

Blok Plaintext ke-3 = 01001110 = N

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497

Kriptogram = (1 x 12) + (1 x 124) + (1 x 252) + (1 x 5) = 393

Blok Plaintext ke-4 = 01000001 = A

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497 Kriptogram = (1 x 12) + (1 x 497) = 509

Blok Plaintext ke-5 = 00100000 = Sp

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497 Kriptogram = (1 x 28) = 28


(39)

Blok Plaintext ke-6 = 01001100 = L

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497

Kriptogram = (1 x 12) + (1 x 124) + (1 x 252) = 388

Blok Plaintext ke-7 = 01000101 = E

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497

Kriptogram = (1 x 12) + (1 x 252) + (1 x 497) = 761

Blok Plaintext ke-8 = 01010011 = S

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497

Kriptogram = (1 x 12) + (1 x 60) + (1 x 5) + (1 x 497) = 574

Blok Plaintext ke-9 = 01010100 = T

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497

Kriptogram = (1 x 12) + (1 x 60) + (1 x 252) = 324

Blok Plaintext ke-10 = 01000001 = A

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497 Kriptogram = (1 x 12) + (1 x 497) = 509

Blok Plaintext ke-11 = 01010010 = R

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497 Kriptogram = (1 x 12) + (1 x 60) + (1 x 5) = 77

Blok Plaintext ke-12 = 01001001 = I

Kunci Publik = 8, 12, 28, 60, 124, 252, 5, 497

Kriptogram = (1 x 12) + (1 x 124) + (1 x 497) = 633

Maka Ciphertext nya adalah 761, 77, 393, 509, 28, 388, 761, 574, 324, 509, 77, 633.

Kompresi Ciphertext


(40)

Untuk kompresi Ciphertext menggunakan kode ASCII dapat dilihat pada gambar 4.1 dibawah ini :

Tabel 4.1 Jumlah Bit Menggunakan Kode ASCII

Σ Frequensi ASCII Bit Freq*Bit

Enter 12 00001101 8 96

7 7 00110111 8 56

3 6 00110011 8 48

6 3 00110110 8 24

9 3 00111001 8 24

5 3 00110101 8 24

8 3 00111000 8 24

1 2 00110001 8 26

0 2 00110000 8 16

2 2 00110010 8 16

4 2 00110100 8 26

Jumlah Bit 360

Sedangkan perhitungan jumlah bit seteleah di kompresi menggunakan metode Boldi-Vigna (ζ4) dapat dilihat pada gambar Tabel 4.2 dibawah ini :

Tabel 4.2 Jumlah Bit Menggunakan Metode Boldi-Vigna (ζ4) Σ Frequensi Boldi-Vigna Bit Freq*Bit

Enter 12 1000 4 48

7 7 10010 5 35

3 6 10011 5 30

6 3 10100 5 15

9 3 10101 5 15

5 3 10110 5 15

8 3 10111 5 15

1 2 11000 5 10

0 2 11001 5 10

2 2 11010 5 10

4 2 11011 5 10

Jumlah Bit 213

Dari tabel 4.2 dapat dibentuk string bit dari string sebelum dikompresi yaitu “761, 77, 393, 509, 28, 388, 761, 574, 324, 509, 77, 633” menjadi string bit dibawah ini :


(41)

“10010 10100 11000 1000 10010 10010 1000 10011 10101 10011 1000 10110 11001 10101 1000 11010 10111 1000 10011 10111 10111 1000 10010 10100 11000 1000 10110 10010 11011 1000 10011 11010 11011 1000 10110 11001 10101 1000 10010 10010 1000 10100 10011 10011 1000”

” Dengan uraian sebagai berikut : 10010 10100 11000 1000 7 6 1 Enter 10010 10010 1000 7 7 Enter

10011 10101 10011 1000 3 9 3 Enter 10110 11001 10101 1000 5 0 9 Enter 11010 10111 1000 2 8 Enter

10011 10111 10111 1000 3 8 8 Enter 10010 10100 11000 1000 7 6 1 Enter 10110 10010 11011 1000 5 7 4 Enter 10011 11010 11011 1000 3 2 4 Enter 10110 11001 10101 1000 5 0 9 Enter 10010 10010 1000 7 7 Enter 10100 10011 10011 1000 6 3 3 Enter


(42)

Sebelum ditulis ke sebuah file hasil kompresi dilakukan penambahan bit-bit padding dan flag bits diawal dan akhir string bit. Bit-bit itu dihasilkan dari panjang string bit itu sendiri apakah habis dibagi delapan dan berapa sisanya jika dibagi delapan. Karena jumlah string bit 213 tidak habis dibagi delapan dan sisanya adalah 5.

Maka dapat dibuat padding “000” dan flagnya adalah “00000011”. Maka diperoleh bit sebagai berikut :

10010 10100 11000 1000 10010 10010 1000 10011 10101 10011 1000 10110 11001 10101 1000 11010 10111 1000 10011 10111 10111 1000 10010 10100 11000 1000 10110 10010 11011 1000 10011 11010 11011 1000 10110 11001 10101 1000 10010 10010 1000 10100 10011 1001 11000000 00000011

Total bit seluruhnya setelah penambahan padding dan flag bits adalah 224 bit. Dengan uraian hasil kompresi sebagai berikut:

10010101 00110001 00010010 10010100 01001110 10110011 10001011 01100110 • 1 DC2 ” N ³ ‹ f 10110001 10101011 11000100 11101111 01111000 10010101 00110001 00010110 ± « Ä ï x • 1 SYN

10010110 11100010 01111010 11011100 01011011 00110101 10001001 01001010 – â y Ü [ 5 HTJ J 00101001 00111001 11000000 00000011

) 9 À ETX

Hasil Kompresi yaitu “

5 DC2N³b±Äïx5SYNâyÜ[HTJJ)9À ETX

Dari hasil kompresi menggunakan Boldi-Vigna (ζ4) diatas dapat dihitung kinerja

kompresinya :

Ratio Of Compression (Rc)

Rc = U U Rc = 60


(43)

Compresion Ratio

Cr = U

U × 100%

Cr =

60× 100% Cr = 62,2% Redudancy (Rd) Rd = 100% - Cr Rd = 100% - 62,2% Rd =37,8%

4.1.1.3 Proses Dekompresi dan Dekripsi

Setelah file berhasil di enkripsi dan di kompresi, selanjutnya file hasil kompresi di Dekompresi terlebih dahulu untuk mengembalikan ciphertext kemudian selanjutnya di dekripsi. Proses dekompresi didapatkan dari tabel kompresi 4.2 diatas yang menghasilkan bit sebagai berikut :

10010 10100 11000 1000 10010 10010 1000 10011 10101 10011 1000 10110 11001 10101 1000 11010 10111 1000 10011 10111 10111 1000 10010 10100 11000 1000 10110 10010 11011 1000 10011 11010 11011 1000 10110 11001 10101 1000 10010 10010 1000 10100 10011 1001 11000000 00000011

Pembacaan string berdasarkan dengan tabel kode Boldi-Vigna (ζ4) sehingga diperoleh

hasil sebagai berikut : 10010 10100 11000 1000 7 6 1 Enter 10010 10010 1000 7 7 Enter

10011 10101 10011 1000 3 9 3 Enter 10110 11001 10101 1000 5 0 9 Enter 11010 10111 1000 2 8 Enter

10011 10111 10111 1000 3 8 8 Enter


(44)

10010 10100 11000 1000 7 6 1 Enter 10110 10010 11011 1000 5 7 4 Enter 10011 11010 11011 1000 3 2 4 Enter 10110 11001 10101 1000 5 0 9 Enter 10010 10010 1000 7 7 Enter 10100 10011 10011 1000 6 3 3 Enter

Hasil dekompresi adalah Ciphertext yaitu “761, 77, 393, 509, 28, 388, 761, 574, 324, 509, 77, 633 “

Selanjutnya setelah file berhasil di dekompresi dan telah mendapatkan hasilnya, kemudian akan dilakukan dekripsi. Proses dekripsi adalah :

Ciphertext : 761, 77, 393, 509, 28, 388, 761, 574, 324, 509, 77, 633. Kunci rahasia : 2, 3, 7, 15, 31, 63, 127, 250

k = 1, n = 4, m = 503 n-1 = (1+m.k)/n

n-1 = (1+531.1)/4 n-1 = 126

Kunci Publik : 8, 12, 28, 60, 124, 252, 508, 469 Kemudian gunakan rumus :

Ciphertext.n-1 mod m

Maka :

761.126 mod 503 = 316 = 3+63+250, berkoresponden dengan 01000101 yaitu E 77.126 mod 503 = 145 = 3+5+127, berkoresponden dengan 01010010 yaitu R

393. 126 mod 503 = 224 = 3+31+63+127, berkoresponden dengan 01001110 yaitu N 509. 126 mod 503 = 253 = 3+250, berkoresponden dengan 01000001 yaitu A


(45)

388. 126 mod 503 = 97 = 3+31+63, berkoresponden dengan 01001100 yaitu L 761. 126 mod 503 = 316 = 3+63+250, berkoresponden dengan 01000101 yaitu E 574. 126 mod 503 = 395 = 3+15+127+250, berkoresponden dengan 01010011 yaitu S 324. 126 mod 503 = 81 = 3+15+63, berkoresponden dengan 01010100 yaitu T

509. 126 mod 503 = 253 = 3+250, berkoresponden dengan 01000001 yaitu A 77. 126 mod 503 = 145 = 3+15+127, berkoresponden dengan 01010010 yaitu R 633. 126 mod 503 = 284 = 3+31+250, berkoresponden dengan 01001001 yaitu I

Dari hasil dekripsi di atas, maka didapat Plaintext awal yaitu “ERNA LESTARI”.

4.2 Tampilan Antarmuka Sistem

Implementasi dari tahapan analisis sistem dan perancangan dapat dilihat dari tampilan antarmuka sistem sebagai berikut :

4.2.1 Tampilan Form Beranda


(46)

4.2.2 Tampilan Form Menu

Form ini memiliki 3 form turunan, yaitu form Bangkit kunci, form Enkripsi dan kompresi dan form Dekompresi dan Dekripsi.

Form menu dapat dilihat pada gambar 4.2 dibawah ini :

Gambar 4.2 Tampilan Form Menu

4.2.3 Tampilan Form Bangkit Kunci

Form Bangkit Kunci merupakan form yng digunakan untuk menentukan Kunci Publik dan Kunci Rahasia. Untuk menentukan kunci rahasia yang pertama kali dilakukan adalah masukkan nilai w (1), w (2), dan distance. Selanjutnya untuk mendapatkan kunci publik adalah dengan menentukan nilai m dan n terlebih dahulu. Untuk tampilan form bangkit Kunci dapat dilihat pada gambar 4.3 pada halaman berikutnya:


(47)

4.2.4 Tampilan Form Enkripsi dan Kompresi

Form ini merupakan form untuk melakukan proses Enkripsi dan Kompresi data. Tampilan Enkripsi dan Kompresi dapat dilihat pada Gambar 4.4 dibawah ini :

Gambar 4.4 Tampilan Form Enkripsi Dan Kompresi

4.2.5 Tampilan Form Dekompresi dan Dekripsi

Form ini merupakan form untuk melakukan proses Dekompresi dan Dekripsi file yang telah di enkripsi dan kompresi terlebih dahulu. Tampilan Dekompresi dan Dekripsi dapat dilihat pada gambar 4.5 dibawah ini :


(48)

4.2.6 Tampilan Form Bantuan

Form ini berisi tentang panduan singkat dalam pengguanaan software ini. Tampilan form bantuan dapat dilihat pada gambar 4.6 dibawah ini :

Gambar 4.6 Tampilan Form Bantuan

4.2.7 Tampilan Form Tentang

Form ini berisi tentang data diri penulis dan keterangan singkat dari program ini. Tampilan form tentang dapat dilihat pada gambar 4.7 dibahwah ini :


(49)

4.3 Pengujian

Pengujian sistem merupakan tahap mengidentifikasi hasil dari implementasi sistem apakah sistem telah berjalan sesuai dengan fungsi-fungsi yang sebelumnya ditentukan pada tahap analisis dan perancangan sistem. Pengujian sistem ini dilakukan pada File teks yang berekstensi *.doc dan *.txt. Pengujian sistem yang dilakukan pada penelitian ini dibagi dalam 3 proses utama yaitu pengujian proses Bangkit Kunci, Enkripsi dan Kompresi dan pengujian proses Dekompresi dan Dekripsi.

4.3.1 Pengujian Bangkit Kunci

Form ini merupakan interaksi antara user dan aplikasi untuk melakukan bangkit kunci dengan algoritma knapsack. Pengujian Bangkit Kunci dapat dilihat pada gambar 4.8 dibawah ini :

Gambar 4.8 Tampilan Form Pengujian Bangkit Kunci

Pada gambar diatas, sebelum melakukan pengujian enkripsi, sebaiknya user melakukan bangkit kunci terlebih dahulu untuk mendapatkan kunci rahasia dan kunci publik. Yang pertama dilakukan adalah memasukkan paramater yaitu W (1), W (2)


(50)

dan distance, kemudian klik button barisan kunci rahasia maka sistem akan menampilkan hasil kunci rahasia. Selanjutnya klik button generate, secara otomatis sistem akan menghasilkan nilai m, dan input nilai n. Kemudian tekan button barisan kunci publik untuk menghasilkan kunci publik. Setelah itu, simpan file hasil bangkit kunci dengan format penyimpanan (*.key), bisa kita lihat pada gambar 4.9 dibawah ini:

Gambar 4.9 Tampilan Form Penyimpanan Hasil Bangkit Kunci

4.3.2 Pengujian Enkripsi dan Kompresi

Form ini merupakan form untuk melakukan proses enkripsi dan Kompresi file teks. Setelah form Enkripsi dan Kompresi muncul, maka lakukan langkah-langkah berikut ini:

1. Mencari file teks yang berformat *.doc atau *.txt dengan cara tekan button pilih teks, kemudian akan muncul pada sistem isi dari file, nama file dan ukuran file. 2. Setelah itu masukkan kunci yang telah di dapat dari hasil bangkit kunci

(*.pubkey) dengan menekan tombol load kunci dapat dillihat pada gambar 4.10 dibawah ini :


(51)

Gambar 4.10 Open Dialog Load Kunci

3. Setelah kunci dimasukkan, lakukan proses Enkripsi dengan menekan tombol enkripsi dan akan muncul hasil dari enkripsi yaitu cipherteks berupa angka dapat kita lihat pada gambar 4.11 dibawah ini :


(52)

Gambar 4.11 Tampilan Hasil Enkripsi

4. Selanjutnya tekan button Kompresi untuk mengkompresi ciphertext (hasil enkripsi) tersebut sehingga muncul hasil kompresi pada sistem dapat kita lihat pada gambar 4.12 dan klik button simpan untuk menyimpan hasil kompresi dalam bentuk .bv dapat kita lihat pada gambar 4.13 dibawah ini :


(53)

Gambar 4.13 Tampilan Save File Hasil Kompresi 4.3.3 Pengujian Dekompresi dan Dekripsi

Form ini merupakan form untuk melakukan proses Dekompresi dan Dekripsi. Setelah form Dekompresi dan Dekripsi muncul, maka lakukan langkah-langkah dibawah ini :

1. Masukkan file yang telah dikompresi sebelumnya. Format file adalah *.bv dapat dilihat pada gambar 4.14 dibawah ini :

Gambar 4.14 Tampilan Open File

2. Selanjutnya klik button Dekompresi untuk mengembalikan nilai ciphertext untuk selanjutnya hasil Ciphertext yang akan di dekripsi. Tampilan untuk Dekompresi dapat dilihat pada gambar 4.15 dibawah ini :


(54)

Gambar 4.15 Tampilan Hasil Dekompresi

3. Setelah file berhasil di Dekompresi, maka yang harus dilakukan selanjutnya adalah masukkan kunci rahasia untuk mendekripsi file hasil dekompresi tersebut. Kunci untuk mendapatkan kunci rahasia, klik button load kunci, pilih file (*.privkey) yang telah disimpan sebelumnya pada saat bangkit kunci dapat dilihat pada gambar 4.16 dibawah ini :


(55)

4. Kemudian klik button Dekripsi untuk menghasilkan Plaintext awal dan menyimpannya dengan menekan button simpan dapat dilihat pada gambar 4.17 dibawah ini :

Gambar 4.17 Tampilan Hasil Dekripsi

4.3.4 Hasil Pengujian

Dari Hasil uji coba pada aplikasi perancangan sistem pengamanan file teks dan kompresi file teks, dimana file hasil enkripsi atau ciphertext jauh lebih panjang karakter dibandingakn sebelum dilakukan proses enkripsi. Fle hasil enkripsi setelah dilakukan proses kompresi menjadi lebih sedikit karakternya dimana file hasil kompresi menjadi lebih kurang setengah jumlah panjang karakter, sebelum dilakukan proses kompresi. Dan untuk pengembalian teks, pengujian dekompresi dan dekripsi dapat berjalan baik karena isi dan ukuran file dapat kembali seperti semula. Dan untuk lebih jelasnya dapat dilihat pada tabel 4.3 dan 4.4 dibawah ini :


(56)

Tabel 4.3 Hasil Pengujian Enkripsi Dan Kompresi

No Ukuran Awal (byte)

Ukuran setelah di Enkripsi (byte)

Waktu Enkripsi

Ukuran Akhir (byte)

Waktu Kompresi

1 13 50 0.001 31 0.011

2 12 45 0.001 28 0.008

3 14 55 0.001 34 0.007

Tabel 4.4 Hasil Pengujian Dekompresi Dan Dekripsi

No Ukuran setelah dikompresi (byte)

Ukuran Dekompresi (byte)

Waktu Enkripsi

Ukuran Awal (byte)

Waktu Kompresi

1 31 49 0.007 13 0.01

2 28 44 0.002 12 0.002


(57)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan hasil studi literatur, analisis, perancangan, implementasi dan pengujian sistem ini, maka didapat kesimpulan sebagai berikut:

1. Dokumen atau file teks yang sudah dienkripsi menjadi ciphertext memiliki karakter yang lebih banyak atau panjang dibandingkan dengan file teks sebelum dilakukan proses enkripsi.

2. Hasil dari enkripsi (ciphertext) selalu berupa angka.

3. File hasil enkripsi setelah dikompresi memiliki kapasitas setengah kali lebih sedikit dibanding file sebelum dikompresi.

4. File hasil kompresi berupa file *.bv (Boldi-Vigna).

5. File hasil bangkit kunci berupa *.pubkey untuk kunci publik dan *.privkey untuk kunci private.

6. Kombinasi antara pengamanan dan kompresi menggunakan algoritma Knapsack dan Boldi-Vigna (ζ4) merupakan perpaduan yang tepat. Dibuktikan dari file hasil dekripsi sama persis, seperti file awal sebelum dilakukan proses enkripsi, misalnya jenis huruf, ukuran huruf dan sebagianya.

5.2 Saran

Adapun saran-saran yang dapat penulis berikan untuk pengembangan dan perbaikan sistem ini adalah sebagai berikut:

1. Diharapkan sistem ini dapat di terapkan pada media pengiriman pesan seperti email, sms dan sebagainya.

2. Diharapkan agar dapat memproses semua bentuk file seperti pdf, docx dan sebagainya.

3. Diharapkan agar mengkombinasikan algoritma kompresi Boldi-Vigna (ζ4) dengan


(58)

BAB 2

LANDASAN TEORI

2.1 Kriptografi

2.1.1 Pengertian Kriptografi

Kriptografi pada awalnya dijabarkan sebagai ilmu yang mempelajari bagaimana menyembunyikan pesan. Pada kriptografi klasik umumnya merupakan teknik penyandian dengan kunci simetrik dan menyembunyikan pesan yang memiliki arti ke sebuah pesan yang nampaknya tidak memiliki arti dengan metode subsitusi (pergantian huruf) dan/atau transposisi (pertukaran tempat). (Sadikin, 2012).

Namun pada pengertian modern kriptografi adalah ilmu yang bersandarkan pada teknik matematika untuk berurusan dengan keamanan informasi seperti kerahasian, keutuhan data dan otentikasi entitas. Jadi pengertian kriptografi modern adalah tidak saja berurusan hanya dengan penyembunyian pesan namun lebih pada sekumpulan teknik yang menyediakan keamanan informasi (Sadikin, 2012).

2.1.2 Sistem Kriptografi

Sistem kriptografi terdiri dari 5 bagian yaitu, (Stinson, 2002) : 1. Plaintext

Plaintext yaitu pesan atau data dalam bentuk aslinya yang dapat terbaca. Plaintext adalah masukan bagi algoritma enkripsi. Untuk selanjutnya digunakan istilah teks asli sebagai pedanan kata plaintext.

2. Secret Key

Secret key yang juga merupakan masukan bagi algoritma enkripsi merupakan nilai yang bebas terhadap teks asli dan menentukan hasil keluaran algoritma enkripsi. Untuk selanjutnya digunakan istilah kunci rahasia sebagai padanan kata secret key.


(59)

3. Ciphertext

Ciphertext adalah keluaran algoritma enkripsi. Ciphertext dapat dianggap sebagai pesan dalam bentuk tersembunyi.

4. Algoritma Enkripsi

Algoritma enkripsi memiliki 2 masukan teks asli dan kunci rahasia. Algoritma enkripsi melakukan transformasi terhadap teks asli sehingga menghasilkan teks sandi.

5. Algoritma Dekripsi

Algoritma dekripsi memiliki 2 masukan yaitu teks sandi dan kunci rahasia. Algoritma dekripsi memulihkan kembali teks sandi menjadi teks asli bila kunci rahasia yang dipakai algoritma dekripsi sama dengan rahasia yang dipakai algoritma enkripsi.

Contoh sistem kriptografi konvensional dapat dilihat pada gambar 2.1. Eve

Alice Bob

M C M

Saluran publik

K

Saluran Aman

(Sumber: Sadikin, Rifki. 2012)

Gambar 2.1 Sistem Kriptografi Konvensional

Sistem enkripsi harus memenuhi kaidah correctness yaitu untuk memenuhi setiap K ∈κ adalah himpunan kunci dan terdapat teks sandi hasil enkripsi teks asli m, c =

�(m) maka harus berlaku �(c) = m untuk semua kemungkinan teks asli.

Pada gambar 1 kunci rahasia dibangkitkan oleh pembangkit kunci dan dikirim melalui saluran aman ke pihak penyandian (encryptor) maupun penyulih sandi (decryptor). Teks sandi dikirim melalui saluran umum sehingga ada pihak ketiga yang dapat membaca teks sandi itu (Sadikin, 2012).

Algoritma Dekripsi Algoritma Enkripsi Sumber kunci


(60)

2.1.3 Jenis Kriptografi

Berdasarkan jenis kuncinya algoritma kriptografi terdiri dari dua jenis yaitu: 1. Algoritma Simetris (Konvensional)

Algoritma simetris (symmetric cryptography) adalah algoritma yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya, sehingga algoritma ini disebut juga sebagai single key algorithm. Algoritma ini disebut juga konvensional karena algoritma jenis ini biasa digunakan sejak berabad-abad yang lalu. Sebelum melakukan komunikasi, pengirim dan penerima pesan harus menyetujui suatu kunci tertentu yang sama untuk dipakai secara bersama. Keamanan sistem kriptografi simetri tergantung pada kerahasiaan kunci karena membocorkan kunci berarti orang lain bisa mengenkripsi dan mendekripsi pesan. Agar komunikasi tetap aman, maka keberadaan kunci harus tetap dirahasiakan dari pihak yang tidak berkepentingan dengan cara pengirim harus memastikan bahwa jalur yang digunakan dalam pendistribusian kunci adalah jalur yang aman atau memastikan bahwa pihak yang ditunjuk membawa kunci untuk pertukaran data adalah pihak yang dapat dipercaya. Algoritma-algoritma yang termasuk dalam kriptografi simetris adalah semua algoritma kriptografi klasik seperti hill cipher, vigenere cipher, playfair cipher, dll. Beberapa algoritma kriptografi modern juga termasuk kriptografi simetris, diantaranya adalah IDEA, DES (Data Encryption Standard), Blowfish, Twofish, Tripel DES, Serpent, AES (Advanced Encryption Standard), RC2, RC4, RC5, RC6, dll (Namira, 2013).

Proses enkripsi-dekripsi algoritma kunci simetris dapat dilihat pada gambar 2.2.

Kunci Private, K Kunci Private, K

Plaintext (P) Ciphertext (C) Plaintext (P)

Gambar 2.2 Skema Kriptografi Simetris

Dekripsi

�(C) = P

Enkripsi


(61)

2. Algoritma Asimetris (Kunci Publik)

Kriptografi asimetris (asymmetric cryptography) adalah algoritma yang menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsi. Kunci enkripsi dapat disebarkan kepada umum yang dinamakan sebagai kunci publik (public key), sedangkan kunci dekripsi disimpan untuk digunakan sendiri dan dinamakan sebagai kunci pribadi (private key). Oleh karena itulah, kriptografi ini dikenal pula dengan nama kriptografi kunci publik (public key cryptography). Pada kriptografi jenis ini, setiap orang yang berkomunikasi mempunyai sepasang kunci, yaitu kunci private dan kunci publik. Prosesnya, pengirim (sender) mengenkripsi pesan dengan menggunakan kunci publik sipenerima pesan (receiver) dan hanya si penerima pesanlah yang dapat mendekripsi pesan karena hanya ia yang mengetahui kunci private itu sendiri. Contoh algoritma yang termasuk algoritma kriptografi kunci publik diantaranya adalah RSA, Elgamal, DSA, Knapsack, dll (Namira, 2013). Proses enkripsi dan dekripsi algoritma kunci asimetris dapat dilihat pada gambar 2.3 dibawah ini :

Kunci Private,K1 Kunci Private,K2

Plaintext (P) Ciphertext (C) Plaintext (P)

Gambar 2.3 Skema Kriptografi Asimetris

2.2 Algoritma Knapsack

Knapsack merupakan optimasi pengangkutan barang atau disebut juga optimasi kombinatoriol. Knapsack problem adalah salah satu masalah bagaimana cara menentukan pemilihan barang dari sekumpulan barang di mana setiap barang tersebut menmpunyai berat dan profit masing-masing, sehingga dari pemilihan barang tersebut didapatkan profit yang maksimum. (Timothy, 2014)

Tujuan Knapsack problem adalah agar dapat mendapatkan keuntungan yang maksimum dari pemilihan barang tanpa melebihi kapasitas daya tampung media

Dekripsi

� (C) = P

Enkripsi


(62)

transportasi tersebut. Dalam teori algoritma, persoalan Knapsack termasuk kedalam kelompok NP-complete. Persoalan yang termasuk NP-complete tidak dapat dipecahkan dalam orde waktu polynomial. (Timothy, 2014)

Jenis-jenis Knapsack adalah: 1. 0/1 Knapsack Problem

Setiap barang hanya terdiri satu unit dan boleh diambil atau tidak sama sekali. 2. 0/n Knapsack Problem

Setiap barang terdiri dari n buat unit dan boleh diambil atau tidak sama sekali 3. Bounded Knapsack Problem

Setiap barang tersedia n buah unit dan jumlahnya terbatas 4. Unbounded Knapsack Problem

Setiap barang tersedia lebih dari satu unit dan jumlahnya tidak terbatas 5. Fractional Knapsack Problem

Barang boleh diambil dalam bentuk pecahan atau sebahagian. Contohnya gula, garam, tepung dan lain-lain. (Namira, 2013)

Knapsack Problem:

Diberikan bobot knapsack adalah M. Diketahui n buah objek yang masing-masing

bobotnya adalah w1, w2, …, wn. Tentukan nilai bi sedemikian sehingga M = b1w1

+ b2w2 + … + bnwn yang dalam hal ini, bi bernilai 0 atau 1. Jika bi = 1, berarti objek i dimasukkan kedalam knapsack, sebaliknya jika bi = 0, objek i tidak dimasukkan. Dalam teori algoritma, persoalan knapsack termasuk ke dalam kelompok NP-complete. Persoalan yang termasuk NP-complete tidak dapat dipecahkan dalam orde waktu polynomial.

Algoritma Knapsack Sederhana

Ide dasar dari algoritma kriptografi knapsack adalah mengkodekan pesan sebagai rangkaian solusi dari dari persoalan knapsack. Setiap bobot wi di dalam persoalan knapsack merupakan kunci private, sedangkan bit-bit plaintext menyatakan bi. Sayangnya, algoritma knapsack sederhana ini hanya dapat digunakan untuk enkripsi, tetapi tidak dirancang untuk dekripsi. Algoritma superincreasing


(63)

Knapsack adalah algoritma yang lemah, karena ciphertext dapat didekripsi menjadi plainteksnya secara mudah dalam waktu lancar.

Algoritma non-superincreasing Knapsack atau normal Knapsack

adalah kelompok algoritma Knapsack yang sulit (dari segi komputasi) karena membutuhkan waktu dalam orde eksponensial untuk memecahkannya. Namun, superincreasing Knapsack dapat dimodifikasi menjadi non-superincreasing Knapsack dengan menggunakan kunci publik (untuk enkripsi) dan kunci rahasia (untuk dekripsi). Kunci publik merupakan barisan non-superincreasing sedangkan kunci rahasia tetap merupakan barisan superincreasing. Modifikasi ini ditemukan oleh Martin Hellman dan Ralph Merkle.

a. Cara membuat kunci publik dan kunci rahasia: 1. Tentukan barisan superincreasing.

2. Kalikan setiap elemen di dalam barisan tersebut dengan n modulo m. Modulus m seharusnya angka yang lebih besar daripada jumlah semua elemen di dalam barisan, sedangkan pengali n seharusnya tidak mempunyai faktor persekutuan dengan m.

3. Hasil perkalian akan menjadi kunci publik sedangkan barisan superincreasing semula menjadi kunci rahasia (Namira, 2013).

b. Enkripsi Algoritma Knapsack

1. Menggunakan kunci publik untuk melakukan enkripsi.

2. Plaintext dipecah menjadi blok bit yang panjangnya sama dengan kardinalitas barisan kunci publik.

3. Kalikan setiap bit didalam blok dengan elemen yang berkoresponden di dalam kunci publik.

c. Dekripsi Algoritma Knapsack

1. Menggunakan kunci rahasia untuk melakukan dekripsi.

2. Menghitung nilai n-1, yaitu kebalikan n modulo m, sedemikian sehingga n * n-1≡ 1 (mod m).


(64)

3. Mengalikan setiap kriptogram dengan n-1 mod m, lalu nyatakan hasil kalinya sebagai penjumlahan elemen-elemen kunci rahasia untuk memperoleh plaintext dengan menggunakan algoritma pencarian solusi superincreasing (Timothy, 2014).

Contoh :

Misalkan barisan superincreasing adalah {2, 5, 9, 17, 25, 50}, m = 103, dan n = 31. Barisan non-superincreasing (atau normal) Knapsack dihitung sbb:

2 . 31 mod 103 = 62 5 . 31 mod 103 = 52 9 . 31 mod 103 = 73 17 . 31 mod 103 = 12 25 . 31 mod 103 = 54 50 . 31 mod 103 = 5

Jadi, kunci publik adalah {62, 52, 73, 12, 54, 5}, sedangkan kunci rahasia adalah {2,5, 9, 17, 25, 50}.

Enkripsi dilakukan dengan cara yang sama seperti algoritma Knapsack sebelumnya. Mula-mula plaintext dipecah menjadi blok bit yang panjangnya sama dengan kardinalitas barisan kunci publik. Kemudian kalikan setiap bit di dalam blok dengan elemen yang berkoresponden di dalam kunci publik.

Contoh :

Misalkan Plaintext: 011001100000110110 dan kunci publik yang digunakan seperti pada Contoh sebelumnya. Plaintext dibagi menjadi blok yang panjangnya 6, kemudian setiap bit di dalam blok dikalikan dengan elemen yang berkorepsonden di dalam kunci publik:

Blok plaintext ke-1 : 011001

Kunci publik : 62, 52, 73, 12, 54, 5

Kriptogram : (1 × 52) + (1 × 73)+ (1 × 5) = 130 Blok plaintext ke-2 : 100000

Kunci publik : 62, 52, 73, 12, 54, 5 Kriptogram : (1 × 62) = 62


(65)

Blok plaintext ke-3 : 110110

Kunci publik : 62, 52, 73, 12, 54, 5

Kriptogram : (1 × 62) + (1 × 52) + (1 × 54) + (1 × 5) = 173 Jadi, ciphertext yang dihasilkan : 130, 62, 173

Dekripsi dilakukan dengan menggunakan kunci rahasia. Mula-mula penerima pesan menghitung n–1 , yaitu balikan n modulo m, sedemikian sehingga n . n–1≡ 1 (mod m). Kekongruenan ini dapat dihitung dengan cara yang sederhana sebagai berikut (disamping dengan cara yang sudah pernah diberikan pada Teori Bilangan Bulat): n . n–1≡ 1 (mod m)

n . n–1 = 1 + km

n–1 = (1 + km)/n , k sembarang bilangan bulat

Kalikan setiap kriptogram dengan n–1 mod m, lalu nyatakan hasil kalinya sebagai penjumlahan elemen-elemen kunci rahasia untuk memperoleh plaintext dengan menggunakan algoritma pencarian solusi superincreasing Knapsack.

Contoh :

Ciphertext dari 130, 62, 173 akan dideskripsikan dengan menggunakan kunci rahasia {2, 5, 9, 17, 25, 50}. Di sini, n = 31 dan m = 103. Nilai n–1 diperoleh sbb:

n–1 = (1 + 103k)/31

Dengan mencoba k = 0, 1, 2, …, maka untuk k = 3 diperoleh n–1 bilangan bulat, yaitu: n–1 = (1 + 103 . 3)/31 = 10

Ciphertext dari Contoh sebelumnya adalah 130, 62, 173 . Plaintext yang berkoresponden diperoleh kembali sebagai berikut:

130. 10 mod 103 = 64 = 5+ 9 + 50 , berkoresponden dengan 011001 62 . 10 mod 103 = 2 = 2 berkoresponden dengan 100000

173 . 10 mod 103 = 82 = 2 + 5 + 25 + 50 , berkoresponden dengan 110110 Jadi, plaintext yang dihasilkan kembali adalah: 011001 100000 110110


(66)

2.3. Kompresi Data

Kompresi data merupakan suatu upaya untuk mengurangi jumlah bit yang digunakan untuk menyimpan atau mentransmisikan data. kompresi data meliputi berbagai teknik kompresi yang diterapkan dalam bentuk perangkat lunak (Software) maupun perangkat keras (Hardware). Bila ditinjau dari penggunaannya, kompresi data dapat bersifat umum untuk segala keperluan atau bersifat khusus untuk keperluan tertentu. Keuntungan data yang terkompresi antara lain: penyimpanan data lebih hemat ruang, mempersulit pembacaan data oleh pihak yang tidak berkepentingan dan memudahkan distribusi data dengan media removable seperti flashdisk, CD, DVD, dll (Tjatur, 2011).

Saat ini terdapat berbagai tipe algoritma kompresi, antara lain: Huffman, IFO, LZHUF, LZ77 dan variannya (LZ78, LZW, GZIP), Dynamic Markov Compression (DMC), Block-Sorting Lossless, Run-Length, Shannon-Fano, Arithmetic, PPM (Prediction by Partial Matching), Burrows-Wheeler Block Sorting, dan Half Byte. (Namira, 2013).

2.3.1. Klasifikasi tipe kompresi data

Secara umum, kompresi data dapat diklasifikasikan ke dalam 2 macam, yaitu (Arief, 2006):

1. Kompresi Lossy

Teknik kompresi dimana data yang sudah dikompresi tidak dapat dikembalikan seperti data semula, dinamakan lossy atau distortive atau noise-incurring. Kompresi seperti ini digunakan untuk gambar dan suara dimana kehilangan (loss) data dapat diijinkan dalam kasus tertentu. Contoh data adalah adalah JPEG dan GIF untuk gambar, MPEG untuk video dan MP3 (MPEG Layer-3) untuk format suara.

Contoh: metode kompresi lossy adalah Transform Coding, Wavelet, dan lain-lain.

2. Kompresi Lossless

Kompresi lossless adalah teknik kompresi untuk data seperti file program, file dokumen dan record basis data dimana sama sekali tidak diijinkan perbedaan


(67)

antara data awal (sebelum kompresi) dan data setelah dilakukan dekompresi. Contoh program kompresi lossless seperti winzip, winrar, dan pkzip. Contoh metode lossless adalah Boldi-Vigna, Shannon-Fano Coding, Huffman Coding, Arithmetic Coding, Run Length Encoding dan lain sebagainya (Rachmat, 2015).

2.3.2 Dekompresi Data

Dekompresi adalah kebalikan dari proses kompresi. Setiap proses kompresi data tentu saja membutuhkan proses dekompresi kembali untuk mendapatkan data yang sesungguhnya. Pada praktek kasusnya, dekompresi yang baik atau dapat dikatakan efisien jika algoritma dekompresinya sesuai dengan algoritma kompresi pada kasus itu sendiri. Audio, Video, dan Foto adalah contoh data yang sangat sering dilakukan proses kompresi dan dekompresi tentu saja menggunakan dengan algoritma yang sama. Adapun hubungan antara kompresi dan dekompresi dapat dilihat pada gambar dibawah ini (Namira, 2013) :

Output

Input Source File Compression

File

Input Output

Compression File decompresion

File

Gambar 2.4 Compression Dan Decompression

Aplikasi dekompresi data sering juga disebut dengan dekompresor (decompresor). Bagaimanapun dekompresi adalah salah satu solusi terbaik untuk mengembalikan data yang telah mengalami proses kompresi (compressed Files). Kompresor dan dekompresor dapat dikatakan sebagai dua proses yang saling berkaitan baik pada sumber dan tujuan masing-masing proses. Pada kasusnya, source disebut dengan coder dan destinasi pesan disebut dengan decoder.

Compression Algorithm

Decompression Algorithm


(68)

2.4 Algoritma Boldi-Vigna (ζ4)

Zeta (ζ) kode juga dikenal sebagai Boldi-Vigna code, diperkenalkan oleh Paolo Boldi dan Sebastiano Vigna sebagai keluarga Variable-Length Code yang merupakan pilihan terbaik untuk kompresi. Dimulai dengan hukum Zipf, seorang kuasa hukum empiris [Zipf 07] diperkenalkan oleh Linguis George K. Zipf. Menyatakan bahwa frekuensi setiap kata dalam bahasa alami kira-kira berbanding terbalik dengan posisinya dalam tabel frekuensi.

Boldi-Vigna kode zeta dimulai dengan bilangan bulat k positif yang menjadi menyusut oleh Faktor kode. Himpunan semua bilangan bulat positif dibagi menjadi [20, 2k - 1], [2k, 22k - 1], [22k, 23k - 1], dan secara umum [2hk, 2 (h + 1) k - 1]. Panjang setiap interval adalah 2 (h + 1) k - 2hk (Salomon, 2007).

Diberikan interval [0, z-1] dan sebuah integer x di interval ini, pertama kita hitung s =[ log2 z]. Jika x <2s - z, dikodekan sebagai unsur xth elemen pada interval ini, pada s - 1 bit. Jika tidak, maka dikodekan sebagai (x - z - 2s) th elemen pada interval di s bit. Dengan latar belakang ini, di sini dibahas bagaimana kode zeta dibangun. Mengingat bilangan bulat n akan dikodekan, kami mempekerjakan k untuk menentukan interval di mana n berada. Salah satu yang diketahui, nilai-nilai h dan k yang digunakan dengan cara yang sederhana untuk membangun kode zeta n dalam dua bagian, nilai h + 1 di unary (sebagai nol h diikuti dengan 1), diikuti oleh minimal kode biner dari n - 2hk dalam interval [0, 2 (h + 1) k - 2hk - 1] (Salomon, 2007).

Contoh:

Diberikan k = 3 dan n = 16, kita tentukan dulu n yang terletak di interval [23, 26 -1], yang sesuai dengan h = 1. Dengan demikian, h + 1 = 2 dan kode unary dari 2 adalah 01. Kode biner minimal 16 - 23 = 8 dibangun dalam langkah-langkah berikut. Panjang z dari interval [23, 26 -1] adalah 56. Ini berarti bahwa s =[ log2 56] = 6. Nilai 8 akan dikodekan 8 = 26 - 56, sehingga dikodekan sebagai x - z - 2s = 8- 56-26 = 16 dalam enam bit, sehingga 010000. Dengan demikian, kode ζ3 dari n = 16 adalah 010000111 (Salomon, 2007).


(69)

Tabel 2.1 Kode Daftar Boldi-Vigna ζ4

Contoh :

Diberikan string = “ERNA LESTARI”

Σ = { E, R, N, A, sp, L, S, T, I } , dengan sp = spasi

Maka dibuat sebuah tabel untuk menghitung bit setelah di kompresi. Tabel bisa dilihat pada tabel 2.2 dibawah ini :

Tabel 2.2 Kompresi Dengan Boldi-Vigna (ζ4)

Σ Freq Boldi-Vigna (ζ4) Bit Freq*Bit

E 2 1000 4 8

R 2 10010 5 10

A 2 10011 5 10

N 1 10100 5 5

Sp 1 10101 5 5

L 1 10110 5 5

S 1 10111 5 5

T 1 11000 5 5

I 1 11001 5 5

Jumlah Bit 58 Bit

n

ζ

4

1 1000

2 10010

3 10011

4 10100

5 10101

6 10110

7 10111

8 11000

9 11001

10 11010

11 11011

12 11100

13 11101

14 11110

15 11111


(70)

2.5 Parameter pembanding

Ada 3 parameter pembanding yang digunakan dalam peneltiaan ini, yaitu Ratio of Compression (RC), Compression Ratio (CR), dan Redudancy (Rd).

1. Ratio of Compression (Rc)

Ratio of Compression (Rc) adalah perbandingan antara ukuran data sebelum dikompresi dengan ukuran data setelah dikompresi (Salomon, 2007).

� = …………...………(1)

2. Compression Ratio (Cr)

Compression Ratio (Cr) adalah persentasi besar data yang telah dikompresi yang didapat dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran data sebelum dikompresi (Salomon, 2007).

� = � %...……….. (2)

3. Redudancy (Rd)

Redundancy (Rd) adalah kelebihan yang terdapat di dalam data sebelum dikompresi. Jadi setelah data dikompresi dapat dihitung Redundancy data yaitu persentasi dari hasil selisih antara ukuran data sebelum dikompresi dengan data setelah dikompresi (Salomon, 2007).

� = % − � ………..….... (3) 2.6 Penelitian Yang Relevan

Berikut ini beberapa penelitian tentang kriptografi dan kompresi data yang berkaitan dengan algoritma knapsack dan Boldi-Vigna (ζ4):

1. Pada penelitian Namira (2013), Implementasi Algoritma Kriptografi Knapsack Dan Algoritma Kompresi Data Run Length Encoding Untuk Mengamankan Dan Kompresi File Teks. Kesimpulan dari penelitian ini yaitu Enkripsi teks


(71)

dengan menggunakan algoritma Knapsack dapat mengamankan pesan dengan baik.

2. Berdasarkan penelitian oleh Disa (2013), Implementasi Pengamanan File Text Dengan Algoritma Kriptografi Knapsack Dan Algoritma Steganografi FOF (First Of File). Kesimpulan dari penelitian ini yaitu Waktu proses dekripsi jauh lebih lama jika dibandingkan dengan waktu proses enkripsi. Hal ini disebabkan karena penambahan permutasi pada algoritma kriptografi Knapsack.

3. Menurut Markle dan Hellman Knapsack problem akan semakin bagus jika jumlah plaintext n lebih besar dari 100 bit, karena akan menghasilkan ciphertext dua kali lebih banyak dari plaintext awal sehingga sulit bagi kriptanalis untuk menentukan satu dari mereka.

4. Berdasarkan kutipan dari buku David Salomon (2007), algoritma Boldi-Vigna sebagai keluarga Variable-Length Code yang merupakan pilihan terbaik untuk kompresi.


(72)

BAB 1 PENDAHULUAN

1.1 Latar Belakang

Masalah keamanan dan kerahasiaan merupakan salah satu aspek penting dari suatu data, pesan dan informasi. Pengiriman suatu pesan, data dan informasi yang sangat penting membutuhkan tingkat keamanan yang tinggi. Namun, dalam perkembangan teknologi komputer dapat terjadi ancaman dari pihak-pihak yang tidak bertanggung jawab. Ancaman yang dapat terjadi adalah diketahuinya informasi yang bersifat rahasia dalam sebuah proses komunikasi data karena data yang digunakan selama proses komunikasi data belum disandikan, untuk mengatasi masalah-masalah tersebut, perlu dilakukan sebuah langkah pencegahan yang efektif.

Cara yang dapat digunakan adalah dengan melakukan pengkodean terhadap data yang dipakai yaitu kriptografi. Metode kriptografi dilakukan dengan cara

penyandian atau pengacakan data asli (enkripsi), sehingga pihak lain yang tidak mempunyai hak akses atas data tersebut tidak dapat memperoleh informasi yang ada didalamnya. Kemudian, data yang sudah teracak dikembalikan lagi ke bentuk awal (dekripsi). Salah satu teknik pengkodean data yang menarik perhatian penulis adalah Knapsack.

Salah satu penelitian yang membahas tentang keamanan tersebut adalah Implementasi Algoritma Kriptografi Knapsack Dan Algoritma Kompresi Data Run Length Encoding Untuk Mengamankan Dan Kompresi File Teks oleh Namira Utami Tanjung (2013). Pada penelitian ini membahas tentang perancangan sebuah aplikasi yang dapat menerapkan sistem pengamanan file teks dan pemampatan (kompresi) data file teks yang telah di enkripsi serta keefektifan menggunakan algoritma Knapsack dalam pengamanan data yang berupa file teks dengan algoritma kompresi data Run Length Encoding. Enkripsi teks dengan menggunakan algoritma Knapsack dapat mengamankan pesan dengan baik.

Di samping usaha pengamanan, sekarang ini orang juga berusaha melakukan proses pengecilan ukuran suatu data (kompresi suatu data). Agar data yang dikirim atau diterima selama komunikasi data berlangsung tidak berukuran besar yang


(1)

vii

IMPLEMENTATION OF KNAPSACK ALGORITHM AND BOLDI-VIGNA (ζ4) ALGORITHM ON SECURITY

AND COMPRESSION OF FILE TEXT

ABSTRACT

Knapsack algorithm is part of the asymmetric cryptography which the encryption key is different from the decryption key. Beside of security problem, the size of the file is also measure and the file may be compressed further. Boldi-Vigna (ζ4) algorithm is an

algorithm that shrink the size of the text file. Combination of Knapsack and Boldi-Vigna (ζ4) algorithm can guarantee that text files may not be seen by unauthorized

users and to ensure the text file may be stored in a low-capacity media file. In this research, writer makes a combination program of Knapsack and Boldi-Vigna (ζ4) for

text files. Sometimes Knapsack algorithm may add the size of the text file, it can be seen in the case where the size of the plaintext is only 12 bytes, then after the encryption process the text file size becoming 45 bytes. In the Boldi-Vigna (ζ4)

compression algorithm happen size reduction as an example the case of the ciphertext which initially measuring 45 bytes after compression process the size becoming 28 bytes.


(2)

DAFTAR ISI

Hal.

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Daftar Lampiran xii

BAB 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 2

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 4

BAB 2 Landasan Teori

2.1 Kriptografi 5

2.1.1 Pengertian Kriptografi 5

2.1.2 Sistem Kriptografi 5

2.1.3 Jenis Kriptografi 7

2.2 Algoritma Knapsack 8

2.3 Kompresi Data 13

2.2.1 Klasifikasi Tipe Kompresi data 13

2.3.2 Dekompresi Data 14

2.4 Algoritma Boldi-Vigna (ζ4) 15

2.5 Parameter Pembanding 17

2.6 Penelitian yang Relevan 17

BAB 3 Analisis dan Perancangan Sistem

3.1 Analisis Sistem 19

3.1.1 Analisis masalah 19

3.1.2 Analisis Persyaratan 20

3.1.3 Pemodelan Sistem 21

3.1.4 Flowchart 27

3.1.4.1 Flowchart sistem secara umum 27

3.1.4.2 Flowchart proses Algoritma Knapsack 29 3.1.4.3 Flowchart proses Algoritma Boldi-Vigna (ζ4) 32


(3)

ix

BAB 4 Implementasi dan Pengujian Sisten

4.1 Implementasi Sistem 46

4.1.1 Proses tahapan Algoritma Knapsack dan Algoritma 46 Boldi-Vigna (ζ4)

4.1.1.1 Proses Bangkit Kunci 46

4.1.1.2 Proses Enkripsi dan Kompresi 48 4.1.1.3 Proses Dekompresi dan Dekripsi 53

4.2 Tampilan Antarmuka Sistem 55

4.2.1 Tampilan form Beranda 55

4.2.2 Tampilan form Menu 55

4.2.3 Tampilan form Bangkit Kunci 56

4.2.4 Tampilan form Enkripsi dan Kompresi 57 4.2.5 Tampilan form Dekompresi dan Dekripsi 57

4.2.6 Tampilan form Bantuan 58

4.2.7 Tampilan form Tentang 58

4.3 Pengujian 59

4.3.1 Pengujian Bangkit Kunci 59

4.3.2 Pengujian Enkripsi dan Kompresi 60

4.3.3 Pengujian Dekompresi dan Dekripsi 63

4.3.4 Hasil Pengujian 65

BAB 5 Kesimpulan dan Saran

5.1 Kesimpulan 67

5.2 Saran 67


(4)

DAFTAR TABEL

Hal.

Tabel 2.1 Kode Daftar Boldi-Vigna (ζ4) 16

Tabel 2.2 Kompresi dengan Boldi-Vigna (ζ4) 16

Tabel 4.1 Jumlah Bit menggunakan Kode ASCII 50

Tabel 4.2 Jumlah Bit menggunakan Metode Boldi-Vigna (ζ4) 50 Tabel 4.3 Hasil Pengujian Enkripsi dan Kompresi 66 Tabel 4.4 Hasil Pengujian Dekompresi dan Dekripsi 66


(5)

xi

DAFTAR GAMBAR

Hal.

Gambar 2.1 Sistem Kriptografi Konvensional 6

Gambar 2.2 Skema kriptografi Simetris 7

Gambar 2.3 Skema Kriptografi Asimetris 8

Gambar 2.4 Compression dan Decompression 14

Gambar 3.1 Diagram Ishikawa untuk analasis permasalahan sistem 20

Gambar 3.2 Use Case Diagram pada sistem 22

Gambar 3.3 Activity Diagram Bangkit Kunci 23

Gambar 3.4 Activity Diagram Enkripsi dan Kompresi 24 Gambar 3.5 Activity Diagram Dekompresi dan Dekripsi 25

Gambar 3.6 Sequence Diagram Bangkit Kunci 26

Gambar 3.7 Sequence Diagram Enkripsi dan Kompresi 26 Gambar 3.8 Sequence Diagram Dekompresi dan Dekripsi 27

Gambar 3.9 Flowchart Enkripsi dan Kompresi 28

Gambar 3.10 Flowchart Dekompresi dan Dekripsi 29

Gambar 3.11 Flowchart Bangkit Kunci 30

Gambar 3.12 Flowchart Enkripsi 31

Gambar 3.13 Flowchart Dekripsi 32

Gambar 3.14 Flowchart Kompresi 33

Gambar 3.15 Flowchart Dekompresi 34

Gambar 3.16 Form Beranda 35

Gambar 3.17 Form Menu 36

Gambar 3.18 Form Bangkit Kunci 37

Gambar 3.19 Form Enkripsi dan Kompresi 39

Gambar 3.20 Form Dekompresi dan Dekripsi 41

Gambar 3.21 Form Bantuan 43

Gambar 3.22 Form Tentang 44

Gambar 4.1 Tampilan form Beranda 55

Gambar 4.2 Tampilan form Menu 56

Gambar 4.3 Tampilan form Bangkit Kunci 56

Gambar 4.4 Tampilan form Enkripsi dan Kompresi 57

Gambar 4.5 Tampilan form Dekompresi dan Dekripsi 57

Gambar 4.6 Tampilan form Bantuan 58

Gambar 4.7 Tampilan form Tentang 58

Gambar 4.8 Tampilan form pengujian Bangkit Kunci 59 Gambar 4.9 Tampilan form penyimpanan hasil bangkit 60

Gambar 4.10 Open dialog load Kunci 61

Gambar 4.11 Tampilan hasil Enkripsi 61

Gambar 4.12 Tampilan hasil Kompresi 62

Gambar 4.13 Tampilan save file hasil Kompresi 62

Gambar 4.14 Tampilan Open file 63

Gambar 4.15 Tampilan hasil Dekompresi 64

Gambar 4.16 Tampilan open file untuk kunci rahasia 64


(6)

DAFTAR LAMPIRAN

Hal.

Lampiran 1 Listing Program A-1