LISTING PROGRAM
1. Knapsack
public class Classknapsack{
void Btn_KRClick(object sender, EventArgs e) { richTextBox1.Text = null;
richTextBox1.Text = richTextBox1.Text + w[i] + "\n"; }
Console.WriteLine("Modular inverse does not exist. Decryption aborted");
for(int i = 0; i < encoded.Length; i++){
void Btn_KPClick(object sender, EventArgs e) { richTextBox2.Text = null;
richTextBox2.Text = richTextBox2.Text + beta[i] + "\n"; }
} }
void Btn_generateClick(object sender, EventArgs e) { int temp = 0;
void Button1Click(object sender, EventArgs e) {
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";
2. Boldi Vigna
public static void InsertionSort(int[] freq, String charset){ fr = freq;
cs = charset;
int n = charset.Length;
public static void boldivigna(String st)
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");
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
6. Seminar
[2014] : Seminar Internasional Youth Convention
[2014] : Seminar Nasional Literasi Informasi “SENARAI” [2015] : Seminar Sosialisasi Toward ASEAN Community 2015:
ASEAN Goes to Campus
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
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.
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
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
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.
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.
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.
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
Gambar 3.8 Sequence Diagram Dekompresi Dan Dekripsi
3.1.4 Flowchart
3.1.4.1 Flowchart sistem secara umum
Mulai
Input file *.txt atau *.doc
Ciphertext Enkripsi dengan metode
Knapsack
Kompresi dengan metode Boldi-Vigna (ζ4)
Hasil Kompresi
Selesai
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
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
Start
Input Plaintext
Input Kunci Publik
Konversi Kode ASCII Plainteks Ke Biner
Hitung Kriptogram
Ciphertext
End
Gambar 3.12 Flowchart Enkripsi
c. Flowchart Dekripsi
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
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
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
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
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
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 :
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
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
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
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
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
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
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
5. Tab Keluar
Berguna untuk keluar dari sistem. 6. PictureBox
Berguna untuk meletakkan foto dalam format *.PNG. 7. GrupBox
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)
Dimana nilai awal itu adalah W(1) = 2. Sehingga didapat :
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 :
Kp = barisan Kunci Publik
w(Kr) = nilai setiap barisan kunci rahasia Sehingga didapat :
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
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
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
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
“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
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 “
Compresion Ratio
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
10010 10100 11000 1000 7 6 1 Enter 10110 10010 11011 1000 5 7 4 Enter 10011 11010 11011 1000 3 2 4 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. 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
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
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
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 :
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 :
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
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
Gambar 4.10 Open Dialog Load Kunci
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 :
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
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 :
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
Tabel 4.3 Hasil Pengujian Enkripsi Dan Kompresi
Tabel 4.4 Hasil Pengujian Dekompresi Dan Dekripsi
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
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
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
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).
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
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
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
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.
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
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 :
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
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
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
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
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).
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)
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):
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.
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.
Sedangkan kompresi data adalah proses mengkodekan informasi menggunakan bit atau information-bearing unit lain yang lebih rendah daripada representasi data yang tidak terkodekan dengan suatu sistem encoding tertentu.
Menimbang pentingnya arti keamanan dalam pengiriman data, maka penulis
mengusulkan sebuah penelitian yang berjudul “Implementasi Algoritma Knapsack dan Algoritma Boldi-Vigna (ζ4) Pada Keamanan dan Kompresi File Teks”. Dalam
penelitian ini akan dibahas mengenai teknik enkripsi dan dekripsi menggunakan algoritma Knapsack dan algoritma Boldi-Vigna (ζ4) sebagai kompresi data file teks.
1.2 Rumusan Masalah
Berdasarkan latar belakang diatas, maka yang menjadi rumusan masalah pada penelitian ini adalah bagaimana mengimplementasikan kriptografi dan kompresi file teks dengan metode Knapsack untuk keamanan dan metode Boldi-Vigna (ζ4 ) untuk
kompresi file.
1.3 Batasan Masalah
Dalam penelitian ini penulis membuat batasan masalah sebagai berikut : 1. File teks yang digunakan adalah dalam bentuk *.txt dan *.doc.
2. Algoritma Knapsack digunakan untuk penyandian data teks sedangkan algoritma Boldi-Vigna (ζ4) digunakan sebagai kompresi file teks yang telah disandikan.
3. Knapsack yang digunakan adalah Knapsack 0/1.
4. Bahasa pemrograman yang digunakan adalah bahasa pemrograman C#.
5. Parameter yang diukur pada kompresi data adalah Compression Ratio (CR), Ratio of Compression (RC) dan Redundancy (Rd).
1.4 Tujuan Penelitian
Tujuan dari penelitian ini adalah sebagai berikut :
2. Membuktikan tepat atau tidaknya mengenkripsi data menggunakan algoritma Knapsack di kombinasikan dengan kompresi data dengan algoritma Boldi-Vigna (ζ4).
1.5 Manfaat Penelitian
Adapun manfaat penelitian ini adalah :
1. Untuk meningkatkan masalah keamanan dan penampatan (kompresi) data.
2. Menambah pengetahuan penulis tentang pengamanan dan penampatan (kompresi) data file dengan metode Knapsack dan Boldi-Vigna (ζ4).
3. Sebagai bahan referensi bagi peneliti lain mengenai pengamanan dan kompresi file dengan metode Knapsack dan Boldi-Vigna( ζ4).
1.6 Metode Penelitian
Penelitian ini menerapkan beberapa metode penelitian sebagai berikut: 1.Studi Literatur
Pada tahap ini dilakukan pengumpulan referensi yang diperlukan dalam penelitian. Hal ini dilakukan untuk memperoleh informasi dan data yang diperlukan untuk penulisan skripsi ini. Referensi yang digunakan dapat berupa buku, jurnal, artikel, situs internet yang berkaitan dengan penelitian. Ini dilakukan untuk memperoleh informasi yang terkait dengan Knapsack, Boldi-Vigna (ζ4), serta
Pemrograman C#.
2. Pengumpulan dan Analisis Data
Pada tahap ini dilakukan pengumpulan dan analisa data yang berhubungan dengan penelitian ini seperti fungsi algoritma Knapsack dan Boldi-Vigna (ζ4)
bisa bekerja dalam enkripsi dan dekripsi juga dalam kompresi dan dekompresi file teks.
3. Perancangan Sistem
Pada tahap ini dilakukan perancangan user interface, Unified Modeling Language (UML), Flowchart dan Struktur program.
4. Implementasi Sistem
5. Pengujian Sistem
Pada tahap ini, sistem diuji apakah aplikasi yang telah dibuat berhasil berjalan sesuai dengan keinginan dan melakukan perbaikan jika masih terdapat kesalahan (error) pada aplikasi.
Sistematika dalam penulisan skripsi ini disusun menjadi beberapa bab,diantaranya yaitu:
BAB 1 : PENDAHULUAN
Bab ini berisi mengenai latar belakang masalah, rumusan masalah, bataan masalah, tujuan & manfaat penelitian, metode penelitian dan sistematika penulisan.
BAB 2 : LANDASAN TEORI
Bab ini berisi mengenai teori-teori yang digunakan untuk mendukung penulisan penelitian, selain itu dalam bab 2 juga dijelaskan mengenai metode yang digunakan dalam penelitian.
BAB 3 : ANALISIS DAN PERANCANGAN SISTEM
Bab ini terdiri dari tahap analisis sistem dan desain perancangan dari program yang akan dibuat, Unified Modeling Language (UML), Flowchart dan termasuk juga algoritma dari program tersebut.
BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM
Bab ini berisi mengenai implementasi dan pengujian dari program yang sebelumnya telah dirancang dan dianalisis sistemnya.
BAB 5 : KESIMPULAN DAN SARAN
ABSTRAK
Algoritma Knapsack merupakan bagian dari kriptografi asimetri yang mana kunci enkripsinya berbeda dengan kunci dekripsinya. Di samping masalah keamanan file teks, masalah ukuran dari sebuah file teks juga menjadi pertimbangan. File teks yang berukuran besar dapat dimampatkan dengan melakukan proses kompresi. Algoritma Boldi-Vigna (ζ4) merupakan algoritma yang mengecilkan ukuran file teks. Kombinasi
algoritma Knapsack dan Boldi-Vigna (ζ4) dapat menjamin file Teks tidak dapat dilihat
oleh pengguna yang tidak berhak dan dapat menjamin file teks dapat disimpan dalam media file yang berkapasitas rendah. Pada penelitian ini, penulis membuat program kombinasi algortitma knapsack dan Boldi-Vigna (ζ4) pada file teks. Pada algoritma
Knapsack akan terjadi penambahan ukuran file teks, hal ini dapat dilihat pada contoh kasus yang mana ukuran plaintext (pesan asli) adalah 12 bytes, kemudian setelah dilakukan proses enkripsi ukuran file teks menjadi 45 bytes. Pada algoritma kompresi Boldi-Vigna (ζ4) terjadi pengurangan ukuran sebagai contoh kasus ciphertext (pesan
yang disamarkan) yang awalnya berukuran 45 bytes setelah dilakukan proses kompresi ukurannya menjadi 28 bytes.
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.
IMPLEMNTASI ALGORITMA KNAPSACK DAN ALGORITMA BOLDI-VIGNA (ζ4) PADA KEAMANAN DAN
KOMPRESI FILE TEKS
SKRIPSI
ERNA LESTARI 121401024
PROGRAM STUDI S-1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
IMPLEMNTASI ALGORITMA KNAPSACK DAN ALGORITMA BOLDI-VIGNA (ζ4) PADA KEAMANAN DAN
KOMPRESI FILE TEKS
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
ERNA LESTARI 121401024
PROGRAM STUDI S-1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA