ANALISIS KOMBINASI ALGORITMA KNAPSACK DAN RLE
PADA FILE TEKS
SKRIPSI
NAMIRA LISTYA UTAMI TANJUNG
081401093
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
ANALISIS KOMBINASI ALGORITMA KNAPSACK DAN RLE
PADA FILE TEKS
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
NAMIRA LISTYA UTAMI TANJUNG 081401093
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : ANALISIS KOMBINASI ALGORITMA KNAPSACK
DAN RLE PADA FILE TEKS
Kategori : SKRIPSI
Nama : NAMIRA LISTYA UTAMI TANJUNG
Nomor Induk Mahasiswa : 081401093
Program Studi : SARJANA (S1) ILMU KOMPUTER
Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI (FASILKOM-TI) UNIVERSITAS
SUMATERA UTARA
Diluluskan di
Medan, 22 Agustus 2013
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Syahril Efendi, S.Si, MIT M. Andri Budiman S.T., M.Comp.Sc., M.E.M. NIP. 196711101996021001 NIP. 197510082008011001
Diketahui/disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
PERNYATAAN
ANALISIS KOMBINASI ALGORITMA KNAPSACK DAN RLE
PADA FILE TEKS
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Agustus 2013
PENGHARGAAN
Puji dan syukur penulis ucapkan kehadirat Allah SWT atas segala rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan skripsi yang berjudul ” Analisis Kombinasi Algoritma Knapsack Dan Rle Pada File Teks”. Skripsi ini merupakan salah satu syarat yang ditetapkan untuk memperoleh gelar sarjana komputer di Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, shalawat beriring salam penulis persembahkan kepada Nabi Besar Muhammad SAW.
Pada kesempatan kali ini penulis ingin mengucapkan terima kasih kepada semua pihak yang telah membantu penulis selama pengerjaan skripsi ini, antara lain kepada :
1. Rektor USU Prof. Dr. dr. Syahril Pasaribu, DTM&H, M.Sc (CTM), Sp.A(K).
2. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Departemen Ilmu Komputer, Fakultas Ilmu komputer dan Teknologi Informasi, Universitas Sumatera Utara dan sebagai dosen penguji dan pembanding I.
4. Ibu Maya Silvi Lydia, BSc,.MSc selaku sekretaris Departemen Ilmu Komputer Fakultas Ilmu komputer dan Teknologi Informasi, Universitas Sumatera Utara.
5. Bapak M. Andri Budiman, ST, M.Comp.Sc, MEM dan bapak Syahril Efendi, S.Si, MIT selaku dosen pembimbing.
6. Bapak Ade Chandra, ST, M.Kom selaku dosen pembanding.
7. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
8. Seluruh dosen Departemen Ilmu Komputer, Fakultas Ilmu komputer dan Teknologi Informasi, Universitas Sumatera Utara yang telah membimbing dan mencurahkan ilmunya selama masa perkuliahan.
9. Seluruh pegawai di lingkungan Program Studi S1 Ilmu Komputer Fasilkom-TI USU.
10. Kedua orang tua tercinta, Ayahanda H.M. Bustami Tanjung dan ibunda H. Ummi Salamah Lubis atas kasih sayang, do’a, dukungan dan motivasi yang tak ternilai harganya.
12. Keluarga besar S1 Ilmu Komputer, khususnya angkatan 2008 yang telah banyak memberi dukungan, masukan, dan kerjasama yang baik.
13. Dira Fahrendy Sembiring yang telah memberi semangat, bimbingan dan serta doanya.
14. Terkhusus ParkirRanger Saria Mahdi Ginting, S.kom, Nurul Faradhilla, S.Kom , Khairunisa Lubis, Skom, Octi Fadhilla Khair, S.Kom. Gustaf Prameswara, S.Kom. Setyo M. Syamsudin Noor, S.Kom, Nanang Tri Bhuana, S.Kom, Nasan Siregar, S.Kom, Marthin F.P, serta teman-teman dilingkungan kampus yang tidak bisa disebutkan satu-persatu yang telah memberikan dukungan yang begitu membekas dihati.
15. Guru-guru dari SD Kemala Bhayangkari 1 Medan, SMPN 15 Medan dan SMAN 14 Medan untuk ilmu yang telah diberikan.
16. Semua pihak yang terlibat langsung ataupun tidak langsung dalam membantu penyelesaian skripsi ini dan tidak dapat penulis ucapkan satu persatu.
Tak ada gading yang tidak retak, demikian juga halnya dengan skripsi ini. Kritik dan saran yang membangun sangat penulis harapkan. Semoga skripsi ini bisa memberikan manfaat bagi pembaca penulis sendiri, amin.
Medan, Agustus 2013
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
Run Length Encoding (RLE) merupakan algoritma yang mengecilkan ukuran file teks,
apabila teks tersebut mengalami banyak perulangan karakter. Kombinasi algoritma Knapsack dan RLE 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 RLE pada file teks. Pada algoritma Knapsack akan terjadi penambahan ukuran file teks, hal ini dapat dilihat pada contoh kasus yang mana ukuran plainteks (pesan asli) adalah 9 bytes, kemudian setelah dilakukan proses enkripsi ukuran file teks menjadi 37 bytes. Pada algoritma kompresi RLE terjadi pengurangan ukuran sebagai contoh kasus cipherteks (pesan yang disamarkan) yang awalnya berukuran 37 bytes setelah dilakukan proses kompresi ukurannya menjadi 7 bytes. Proses kombinasi dapat dilakukan sebaliknya, yaitu kompresi teks terlebih dahulu kemudian enkripsi teks tersebut, masih dengan plainteks yang sama beukuran 9 bytes, setelah dilakukan kompresi ukuran file menjadi 2 bytes. Kemudian dilakukan enkripsi ukuran file menjadi 9 bytes. Karena itu pengunaan kombinasi enkripsi dan kompresi data lebih baik karena file menjadi lebih kecil dibandingkan kombinasi kompresi dan enkripsi data. Plainteks yang memiliki banyak perulangan karakter akan terkompresi dengan baik.
ANALYSIS COMBINATION KNAPSACK ALGORITHM AND RLE FOR TEXT FILE
ABSTRACT
Knapsack algorithm is part of the asymmetric cryptography which the encryption key is different from the decryption key. Apart from safety, the size of the file is also measure and the file may be compressed further. Run Length Encoding (RLE) algorithm is an algorithm that shrink the size of the text file, if and only if the text has a lot of looping of character. Combination of Knapsack and RLE 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 paper, writer makes a combination program of Knapsack and RLE 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 9 bytes, then after the encryption process the text file size becoming 37 bytes. In the RLE compression algorithm happen size reduction as an example the case of the ciphertext which initially measuring 37 bytes after compression process the size becoming 7 bytes. Combination process can be done otherwise, the text compression first and then the encrypting text, still with the same plaintext measuring 9 bytes, after the compressed file size to 2 bytes. Then do the encryption of the file size to 9 bytes. There for using a combination of encryption and file compression are better because it is smaller than a combination of compression and file encryption. The plaintext who has a lot of looping of character will be compressed correctly.
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
1.4. Tujuan Penelitian 3
1.5. Manfaat Penelitian 3
1.6. Metodologi Penelitian 4
1.7. Sistematika Penulisan 5
Bab 2 Landasan Teori 6
2.1. Kriptografi 6
2.1.1 Pengertian Kriptografi 6
2.1.2 Enkripsi dan Dekripsi 7
2.1.3 Jenis Kriptografi 8
2.2. Algoritma Knapsack 10
2.3. Teori Dasar Kompresi 14
2.3.1 Kompresi data 14
2.3.2 Dekompresi data 16
2.4. Run Length Encoding 17
Bab 3 Analisis dan Perancangan Sistem 19
3.1. Analisis Sistem 19
3.1.1 Analisis Masalah 19
3.2 Analisis Persyaratan 20
3.2.1 Analisis Persyaratan Fungsional 21 3.2.2 Analisis Persyaratan Non-Fungsional 21
3.3.1 Pemodelan Persyaratan Sistem Use Case 22
3.3.2 Activity Diagram 26
3.3.3 Sequence Diagram 31
3.3.4 Perancangan Flowchart Sistem 34 3.3.4.1 Flowchart Proses Algoritma Knapsack 34 3.3.4.2 Flowchart Proses Algoritma RLE 36 3.3.4.3 Flowchart Proses Algoritma Kombinasi 37
3.4 Perancangan Antar Muka 40
3.4.1 Perancangan Form Beranda 41 3.4.2 Perancangan Form Menu 41
Bab 4 Implementasi dan Pengujian 45
4.1. Implementasi Sistem 45
4.1.1. Proses Tahapan Algoritma Knapsack dan RLE 45 4.1.1.1 Proses Bangkit Kunci 45 4.1.1.2 Proses Kompresi dan Enkripsi 47 4.1.1.3 Proses Enkripsi dan Kompresi 50
4.1.2. Tampilan Antarmuka Sistem 51
4.1.1.1.Tampilan Form Beranda 51
Bab V Kesimpulan dan Saran 66
5.1. Kesimpulan 66
5.2. Saran 67
Daftar Pustaka 68
DAFTAR TABEL
Spesifikasi Use Case Kompresi Spesifikasi Use Case Dekompresi Spesifikasi Use Case Bangkit Kunci Spesifikasi Use Case Enkripsi Spesifikasi Use Case Dekripsi Spesifikasi Use Case Kombinasi
Tabel Hasil Pengujian Kombinasi untuk TEKS1.txt Tabel Hasil Pengujian Kombinasi untuk TEKS2.txt
DAFTAR GAMBAR
Proses Enchipering dan Deciphering
Kriptografi Simetris Kriptografi Kunci Publik
Compresion dan Decompresion
Coder dan Decoder
Diagram Ishikawa untuk Analisis Permasalahan Sistem
Use case diagram
Activity Diagram Kompresi
Activity Diagram Dekompresi
Activity Diagram Bangkit Kunci
Activity Diagram Enkripsi
Activity Diagram Dekripsi
Activity Diagram Kombinasi
Sequence diagram Kombinasi Algoritma Kompresi dan Enkripsi
Sequence diagram Kombinasi Algoritma Enkripsi dan Kompresi
Sequence diagram Bangkit Kunci
Flowchart Enkripsi
Flowchart Dekripsi
Flowchart Kompresi
Flowchart Dekompresi
Flowchart Kompresi dan Enkripsi
Flowchart Enkripsi dan Kompresi
Flowchart Dekompresidan Dekripsi
Flowchart Dekripsi dan Dekompresi
Form Beranda
Form Bangkit Kunci
Form Kombinasi
Form Dekripsi dan Dekompresi
Form Dekompresi dan Dekripsi
Source Code proses Bangkit Kunci Rahasia
Source Code proses Bangkit Kunci Publik
Source Code proses Kompresi
Source Code proses Enkripsi
Source Code proses Dekripsi
Source Code proses Dekompresi
Tampilan Form Beranda Tampilan Form Tentang Tampilan Form Bantuan
Tampilan Pop-up Windows Pilih Teks TampilanPengujianKompresi
TampilanPengujianDekompresi Tampilan Pengujian Bangkit Kunci
4.14
Tampilan Pengujian Enkripsi
Informasi Penyimpanan File Enkripsi TampilanPengujian Dekripsi
TampilanPengujianKombinasi untuk TEKS1 TampilanPengujianKombinasi untuk TEKS2
TampilanPengujianDekripsi dan Dekompresi untuk TEKS1 TampilanPengujianDekripsi dan Dekompresi untuk TEKS2 TampilanPengujianDekompresi dan Dekripsi untuk TEKS1 TampilanPengujianDekompresi dan Dekripsi untuk TEKS2
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
Run Length Encoding (RLE) merupakan algoritma yang mengecilkan ukuran file teks,
apabila teks tersebut mengalami banyak perulangan karakter. Kombinasi algoritma Knapsack dan RLE 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 RLE pada file teks. Pada algoritma Knapsack akan terjadi penambahan ukuran file teks, hal ini dapat dilihat pada contoh kasus yang mana ukuran plainteks (pesan asli) adalah 9 bytes, kemudian setelah dilakukan proses enkripsi ukuran file teks menjadi 37 bytes. Pada algoritma kompresi RLE terjadi pengurangan ukuran sebagai contoh kasus cipherteks (pesan yang disamarkan) yang awalnya berukuran 37 bytes setelah dilakukan proses kompresi ukurannya menjadi 7 bytes. Proses kombinasi dapat dilakukan sebaliknya, yaitu kompresi teks terlebih dahulu kemudian enkripsi teks tersebut, masih dengan plainteks yang sama beukuran 9 bytes, setelah dilakukan kompresi ukuran file menjadi 2 bytes. Kemudian dilakukan enkripsi ukuran file menjadi 9 bytes. Karena itu pengunaan kombinasi enkripsi dan kompresi data lebih baik karena file menjadi lebih kecil dibandingkan kombinasi kompresi dan enkripsi data. Plainteks yang memiliki banyak perulangan karakter akan terkompresi dengan baik.
ANALYSIS COMBINATION KNAPSACK ALGORITHM AND RLE FOR TEXT FILE
ABSTRACT
Knapsack algorithm is part of the asymmetric cryptography which the encryption key is different from the decryption key. Apart from safety, the size of the file is also measure and the file may be compressed further. Run Length Encoding (RLE) algorithm is an algorithm that shrink the size of the text file, if and only if the text has a lot of looping of character. Combination of Knapsack and RLE 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 paper, writer makes a combination program of Knapsack and RLE 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 9 bytes, then after the encryption process the text file size becoming 37 bytes. In the RLE compression algorithm happen size reduction as an example the case of the ciphertext which initially measuring 37 bytes after compression process the size becoming 7 bytes. Combination process can be done otherwise, the text compression first and then the encrypting text, still with the same plaintext measuring 9 bytes, after the compressed file size to 2 bytes. Then do the encryption of the file size to 9 bytes. There for using a combination of encryption and file compression are better because it is smaller than a combination of compression and file encryption. The plaintext who has a lot of looping of character will be compressed correctly.
BAB 1
PENDAHULUAN
1.1 Latar Belakang Masalah
Kemajuan teknologi dewasa ini menyebabkan saling ketergantungan antara komputer
dan telekomunikasi semakin besar. Jaringan-jaringan komputer mempunyai andil
besar untuk pengadaan sumber-sumber informasi. Dengan adanya jaringan-jaringan
tersebut memudahkan orang memperoleh data serta informasi dimanapun secara
terbuka. Hal ini membuka peluang bagi orang-orang yang tidak bertanggung jawab
melakukan kecurangan-kecurangan. Seperti memanipulasi data, menyadap data, dan
lain sebagainya pada data yang dianggap penting dan sangat pribadi.
Keamanan data diperlukan untuk mengatasi kecurangan tersebut, salah satu
penelitian yang membahas tentang pengamanan data adalah Aplikasi Enkripsi Dan
Dekripsi Dengan Algoritma Knapsack Public Block Menggunakan Vb.Net. oleh Tri
Wahyu Widyaningsih. Pada penelitian ini membahas tentang pemanfaatan VB.Net
sebagai salah satu bahasa pemrograman berorientasi objek untuk memperoleh
rancangan yang lebih menarik, dan mendukung pembuatan aplikasi keamanan data
untuk meningkatkan keotentikan data. Aplikasi enkripsi dekripsi dengan algoritma
knapsack public block diharapkan dapat membantu siapapun yang ingin mengamankan
Selain keamanan data yang perlu diperhatikan juga adalah kecepatan dalam pengiriman data tersebut. Kecepatan pengiriman ini tergantung dari ukuran informasi tersebut. Salah satu solusi masalah tersebut adalah dengan melakukan pemampatan (kompresi) data sebelum melakukan pengiriman dan kemudian penerima akan merekonstruksinya kembali menjadi data aslinya (dekompresi).
Kompresi data adalah istilah umum untuk berbagai algoritma dan program
yang dikembangkan untuk mengatasi masalah pemampatan data. Tujuan dari data
yang kompresi untuk mengurangi redundansi dalam data yang tersimpan atau data
ditransmisikan, sehingga meningkatkan efektif data kepadatan [3]. Salah satu
penelitian yang membahas tentang masalah kompresi data yaitu Analisis
Perbandingan Algoritma Kompresi Lempel Ziv Welch, Arithmetic Coding, Dan
Run-Length Encoding Pada File Teks oleh Telaumbanua ,Plipus . Dalam penelitian ini,
dibandingkan tiga algoritma kompresi data yaitu Lempel Ziv Welch (LZW),
Arithmetic Coding, dan Run-Length Encoding(RLE), dimana algoritma RLE dibantu
oleh algoritma BurrowsWheeler Transform (BWT) untuk memaksimalkan kinerjanya.
Algoritma-algoritma tersebut dipilih karena semuanya dalam kategori algoritma
lossless, dan mewakili masing-masing teknik pengkodean. Algoritma yang memiliki
perfomansi terbaik berdasarkan rata-rata rasio dan waktu proses kompresi/dekompresi
adalah algoritma LZW. Algortima RLE+BWT sangat efektif untuk file yang memilki
banyak deretan karakter yang sama, namun buruk untuk file yang isinya tidak
beraturan (acak). Sama halnya seperti algoritma RLE+BWT, algoritma LZW juga
buruk untuk file yang isinya acak, namun efektif untuk file teks biasa, sedangkan
algoritma Arithmetic Coding efektif untuk semua file uji baik dalam keadaan acak
maupun tidak [12]
Menimbang begitu pentingnya arti keamanan dalam komunikasi pertukaran
data, maka penulis mengusulkan suatu penelitian yang berjudul“Analisis Kombinasi
Algoritma Knapsack dan RLE pada File Teks”. Dimana dalam penelitian ini akan
dibahas mengenai teknik enkripsi dan dekripsi data menggunakan algoritma Knapsack
dan algoritma RLE (Run Length Encoding) sebagai kompresi data pada file teks
ataupun sebaliknya.
Berdasarkan hal-hal yang telah diungkapkan pada latar belakang, maka yang menjadi
rumusan masalah dalam penelitan ini adalah bagaimana mengimplementasikan
kriptografi dan kompresi teks dengan algoritma Knapsack dan RLE untuk
mengamankan file teks.
1.3 Batasan Masalah
Beberapa batasan masalah yang menjadi acuan dalam pengerjaan skripsi ini adalah
sebagai berikut:
1. Penelitian ini hanya membahas tentang teknik pengamanan file teks menggunakan
algoritma Knapsack dan kompresi menggunakan algoritma RLE.
2. Teks yang digunakan dalam penelitian ini adalah code ASCII (American Standard
Code for Information Interchange) dan tiap-tiap karakter direpresentasikan oleh 7
binary digit.
3. Format file teks yang digunakan adalah *.txt
4. Untuk mengimplementasikan algoritma tersebut maka akan dibuat aplikasi dengan
menggunakan Bahasa pemograman MATLAB 2009
1.4 Tujuan Penelitian
1. Membangun aplikasi yang dapat menerapkan sistem pengamanan file teks dengan
menggunakan algoritma Knapsack serta pemampatan (kompresi) data pada file
teks yang telah di enkripsi tersebut dengan menggunakan algoritma RLE.
2. Mengatasi masalah keamanan data dan pemampatan data dalam pengiriman
informasi melalui jaringan komunikasi.
3. Membuktikan tepat atau tidaknya metode enkripsi menggunakan algortima
Knapsack dikombinasikan dengan metode kompresi menggunakan algoritma RLE
ataupun sebaliknya.
1.5 Manfaat Penelitian
1. Bagi penulis, penelitian ini dilakukan untuk memenuhi syarat kelulusan program
Strata-1 (S1) program studi Ilmu Komputer Fakultas Ilmu Komputer dan
2. Diharapkan penilitian ini akan menambah literatur dan rujukan dalam bidang ilmu
Kriptografi mengenai pengamanan data menggunakan algoritma Knapsack serta
kompresi data menggunakan algoritma RLE khususnya pada file teks.
3. Bagi masyarakat diharapkan aplikasi ini dapat berguna untuk memberikan rasa
aman dan nyaman bagi pengguna untuk melakukan pertukaran informasi melalui
jaringan komunikasi.
1.6 Metodologi Penelitian
Dalam penelitian ini, ada beberapa tahapan yang akan dilakukan sebagai berikut:
1. Studi Literatur
Algoritma ini dilaksanakan dengan melakukan studi kepustakaan yang relevan
serta buku-buku maupun artikel-artikel atau e-book dan juga journal international
yang didapatkan melalui internet.
2. Analisis Data
Pada tahap ini dilakukan pengolahan data yang didapat yaitu dilakukan
pemrosesan awal sehingga data masukan relatif lebih kecil dan kemudian
dilakukan analisis terhadap hasil studi literatur yang diperoleh sehingga menjadi
suatu informasi.
3. Perancangan Sistem
Pada tahap ini akan dilakukan perancangan desain antarmuka sistem dan struktur
proses kerja sistem.
4. Pengimplementasian Sistem
Pada tahap ini akan dilakukan implementasi dari hasil perancangan sistem dalam
bentuk perangkat lunak.
5. Pengujian Sistem
Pada tahap ini akan dilakukan pengujian sistem yang bertujuan untuk mengetahui
kesalahan-kesalahan yang terjadi pada sistem, sehingga dapat dilakukan
perbaikan. Kemudian dilakukan analisis pada sistem untuk mengetahui apakah
sistem sesuai dengan permasalahan dari penelitian.
6. Penyusunan Laporan
Pada tahap ini dilakukan penyusunan laporan dari hasil analisis dan perancangan
1.7 Sistematika Penulisan
BAB 1: PENDAHULUAN
Bab ini akan menjelaskan mengenai latar belakang pemilihan judul, rumusan masalah,
batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan
sistematika penulisan.
BAB 2:LANDASAN TEORI
Membahas teori-teori yang berhubungan dengan kriptografi, algoritma knapsack dan
kompresi data yaitu algoritma RLE .
BAB 3:ANALISIS DAN PERANCANGAN SISTEM
Membahas bagian-bagian yang berkaitan dengan sistem, antarmuka sistem, serta
menjelaskan mengenai cara kerja sistem pada proses pengamanan data menggunakan
algoritma knapsack dan kompresi data menggunakan algoritma RLE.
BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM
Membahas tentang implementasi dan pengujian sistem.
BAB 5: KESIMPULAN DAN SARAN
Bab terakhir akan memuat kesimpulan isi dari keseluruhan uraian bab-bab
sebelumnya dan saran-saran dari hasil yang diperoleh yang diharapkan dapat
BAB 2
LANDASAN TEORI
2.1 Kriptografi
2.1.1 Pengertian kriptografi
Kriptografi merupakan metode untuk mengirimkan pesan rahasia sehingga hanya
penerima pesan yang dimaksud dapat menghapus, menyamarkan atau membaca pesan
tersebut. Kriptografi berasal dari kata bahasa Yunani yaitu kryptos yang berarti
tersembunyi dan grapein yang berarti menulis. Pesan asli disebut plainteks dan pesan
yang telah disandikan disebut cipherteks. Pesan yang telah dienkapsulasi dan dikirim
disebut kriptogram. Proses mengubah plainteks menjadi cipherteks disebut enkripsi.
Membalikkan proses cipherteks menjadi plainteks disebut dekripsi. Siapapun yang
terlibat dalam kriptografi disebut kriptografer. Pada sisi lain, studi tentang teknik
matematika karena berusaha untuk mengalahkan metode kriptografi disebut
pembacaan sandi. Cryptanalysts adalah orang-orang berlatih pembacaan sandi [7]
Gambar 2.1. Proses Enchiphering dan Deciphering [5]
Enciphering Plainteks
Cipherteks
Key Key Deciphering
2.1.2 Enkripsi dan Dekripsi
Proses menyandikan plainteks menjadi cipherteks disebut enkripsi
(encryption) atau disebut juga enciphering. Sedangkan proses mengembalikan
cipherteks menjadi plainteks disebut dekripsi (decryption) atau dechipering. Enkripsi
dan dekripsi dapat diterapkan pada pesan yang dikirim ataupun pesan yang disimpan.
Istilah encryption of data in motion mengacu pada enkripsi data yang ditransmisikan
melalui saluran komunikasi, sedangkan istilah decryption of data at rest mengacu pada
enkripsi data yang ada didalam storage. [8]
Enkripsi data yang sering digunakan adalah Fast Block dan Strem Cipher.
Kedua teknik ini adalah contoh dari algoritma simetris. Kekurangan dari algoritma
simetris adalah tingkat kesulitan dalam menentukan kunci rahasia (private key) untuk
didistribusikan . Oleh karena itu kita harus mengetahui teknik dari algoritma
kriptografi yang kita gunakan untuk membuat sebuah data enkripsi.
Untuk mengembalikan plainteks yang telah dienkripsi, membutuhkan teknik
dekripsi. Dekripsi adalah teknik yang digunakan untuk menguraikan data rahasia atau
pesan yang telah dienkripsi kembali kebentuk semula atau bentuk aslinya dan menjadi
pesan yang dapt dibaca dan dimengerti maksudnya. Adapun rumus untuk proses
enkripsi dan dekripsi adalah sebagai berikut:
c = ek(m)………2.1[11]
dimana:
- m adalah plainteks
- e adalah fungsi penyamaran
- k adalah kunci rahasia
- c adalah cipherteks
dan untuk proses dekripsi dapat digunakan persamaan sebagai berikut:
m = dk(c)………2.2[11]
dimana :
- d adalah fungsi dekripsi
- k adalah kunci
- c adalah cipherteks
kedua persamaan ini adalah teknik enkripsi dan dekripsi yang menggunakan
kuncipada proses permutasinya. [11]
2.1.3 Jenis kriptografi
2.1.2.1Algoritma simetris
Adalah algoritma dimana kunci untuk enkripsi bisa dihitung dari kunci dekripsi, dan
sebaliknya. Algoritma simetris kadang disebut juga algoritma konvensional. Sebagian
besar algoritma simetris menggunakan kunci enkripsi dan kunci dekripsi yang sama.
Algoritma simetris sering juga disebut sebagai algoritma kunci rahasia, algoritma
kunci tunggal atau algoritma satu kunci. Pengirim dan penerima harus menyetujui
suatu kunci tertentu sebelum mereka dapat berkomunikasi dengan aman. Keamanan
algoritma simetris tergantung pada kunci, membocorkan kunci berarti bahwa orang
lain dapat mengenkripsi dan mendekripsi pesan. Agar komunikasi tetap aman, kunci
harus tetap dirahasiakan. Yang termasuk algoritma kunci simetris adalah OTP, DES,
RC2, RC4, RC5, IDEA, Twofish, Magenta, FEAL, SAFER, LOKI, CAST, Rijndael
(AES), Blowfish, GOST, A5, Kasumi dan lain-lainnya [9].
Gambar 2.2 Kriptografi Simetris
Keterangan :
- m adalah plainteks
- e adalah fungsi enkripsi
- d adalah fungsi dekripsi
- k adalah kunci
- c adalah cipherteks
2.1.2.2Algoritma Kunci Publik
Sering juga disebut sebagai algoritma asimetris. Merupakan algoritma dimana
kunci untuk mengenkripsi pesan berbeda dengan kunci yang digunakan untuk
mendekripsi. Bahkan kunci untuk mendekripsi tidak bisa dihitung dari kunci untuk
mengekripsi.
Dinamakan kunci publik, sebab kunci untuk enkripsi tidak rahasia dan dapat
diketahui oleh siapapun (diumumkan ke publik), sementara kunci untuk dekripsi
hanya diketahui oleh penerima pesan. Pada kriptografi jenis ini, setiap orang yang
berkomunikasi mempunyai sepasang kunci, yaitu kunci privat dan kunci publik.
Pengirim mengenkripsi pesan dengan menggunakan kunci publik si penerima
pesan. Hanya penerima pesan yang dapat mendekripsikan pesan karena hanya dia
yang mengetahui kunci privatnya sendiri [9].
Gambar 2.3 Kriptografi Kunci Publik
Keterangan :
- m adalah plainteks
- e adalah fungsi enkripsi
- E adalah kunci publik
- d adalah fungsi dekripsi
- D adalah kunci rahasia
- c adalah cipherteks
2.1.4 Algoritma Knapsack
Algoritma Knapsack juga adalah algoritma kriptografi kunci-publik. Keamanan
algoritma ini terletak pada sulitnya memecahkan persoalan knapsack (Knapsack
Problem). Knapsack artinya karung/kantung. Karung mempunyai kapasitas muat
terbatas. Barang-barang dimasukkan ke dalam karung hanya sampai batas kapasitas
maksimum karung saja [8].
Jenis-jenis Knapsack adalah:
1. 0/1 Knapsack Problem
Setiap barang hanya terdiri satu unit dan boleh diambil atau tidak sama sekali
[4]
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 tersediah 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 [2].
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 (2.1)[8]
yang dalam hal ini, bi bernilai 0 atau 1. Jika bi = 1, berarti objek i dimasukkan
Dalam teori algoritma, persoalan knapsack termasuk ke dalam kelompok
NP-complete. Persoalan yang termasuk NP-complete tidak dapat dipecahkan dalam orde
waktu polynomial [8].
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 privat, sedangkan bit-bit plainteks menyatakan
bi. Sayangnya, algoritma knapsack sederhana ini hanya dapat digunakan untuk
enkripsi, tetapi tidak dirancang untuk dekripsi.
Algoritma superincreasing Knapsack adalah algoritma yang lemah, karena
cipherteks dapat didekripsi menjadi plainteksnya secara mudah dalam waktu lanjar.
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 [8].
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.
Contoh :
Barisan non-superincreasing (atau normal) Knapsack dihitung sbb:
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 plainteks 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 Plainteks: 011001100000110110 dan kunci publik yang digunakan seperti
pada Contoh sebelumnya.
Plainteks dibagi menjadi blok yang panjangnya 6, kemudian setiap bit di
dalam blok dikalikan dengan elemen yang berkorepsonden di dalam kunci publik:
Blok plainteks ke-1 : 011001
Kunci publik : 62, 52, 73, 12, 54, 5
Kriptogram : (1 × 52) + (1 × 73)+ (1 × 5) = 130
Blok plainteks ke-2 : 100000
Kunci publik : 62, 52, 73, 12, 54, 5
Kriptogram : (1 × 62) = 62
Blok plainteks ke-3 : 110110
Kriptogram : (1 × 62) + (1 × 52) + (1 × 54) +
(1 × 5) = 173
Jadi, cipherteks 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 plainteks
dengan menggunakan algoritma pencarian solusi superincreasing Knapsack.
Contoh :
Cipherteks 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
Cipherteks dari Contoh sebelumnya adalah 130, 62, 173 . Plainteks yang
berkoresponden diperoleh kembali sebagai berikut:
62 ⋅ 10 mod 103 = 2 = 2 berkoresponden dengan 100000
173 ⋅ 10 mod 103 = 82 = 2 + 5 + 25 + 50 , berkoresponden dengan 110110
Jadi, plainteks yang dihasilkan kembali adalah:
011001 100000 110110
2.2 Teori Dasar Kompresi
2.2.1 Kompresi data
Kompresi ialah proses pengubahan sekumpulan data menjadi suatu bentuk kode untuk
menghemat kebutuhan tempat penyimpanan dan waktu untuk transmisi data . 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.
Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi
file input) menjadi sekumpulan codeword, metode kompresi terbagi menjadi dua
kelompok, yaitu :
1. Metode statik : menggunakan peta kode yang selalu sama. Metode ini
membutuhkan dua fase (two-pass): fase pertama untuk menghitung probabilitas
kemunculan tiap simbol/karakter dan menentukan peta kodenya, dan fase kedua
untuk mengubah pesan menjadi kumpulan kode yang akan ditransmisikan.
Contoh: algoritma Huffman statik.
2. Metode dinamik (adaptif) : menggunakan peta kode yang dapat berubah dari
waktu ke waktu. Metode ini disebut adaptif karena peta kode mampu beradaptasi
terhadap perubahan karakteristik isi file selama proses kompresi berlangsung.
Metode ini bersifat onepass, karena hanya diperlukan satu kali pembacaan
Berdasarkan teknik pengkodean/pengubahan simbol yang digunakan, metode
kompresi dapat dibagi ke dalam tiga kategori, yaitu :
1. Metode symbolwise : menghitung peluang kemunculan dari tiap symbol dalam
file input, lalu mengkodekan satu simbol dalam satu waktu, dimana simbol yang
lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang lebih
jarang muncul, contoh: algoritma Huffman.
2. Metode dictionary : menggantikan karakter/fragmen dalam file input dengan
indeks lokasi dari karakter/fragmen tersebut dalam sebuah kamus (dictionary),
contoh:algoritma LZW.
3. Metode predictive : menggunakan model finite-context atau finite-state untuk
memprediksi distribusi probabilitas dari simbol-simbol selanjutnya; contoh:
algoritma DMC.
Ada beberapa faktor yang sering menjadi pertimbangan dalam memilih suatu
metode kompresi yang tepat, yaitu kecepatan kompresi, sumber daya yang dibutuhkan
(memori, kecepatan PC), ukuran file hasil kompresi, besarnya redundansi, dan
kompleksitas algoritma.
Tidak ada metode kompresi yang paling efektif untuk semua jenis file. Dalam
penelitian ini algoritma yang digunakan hanya Run-Length Encoding. Karena
Algoritma tersebut cepat dan mudah untuk mengeksekusi [6].
2.2.2 Dekompresi data
Dekompresi adalah kebalikan dari proses kompresi. Setiap proses kompresi data tentu
saja membutuhkan proses dekompresi kembali untuk mendapatkan data yang
Pada praktek kasusnta, dekompresi yang baik atau dapat dikatakan efisien jika
algoritma dekompresinya sesuai dengan algoritma kompresi pasa 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:
Gambar 2.4 Compression dan Decompression [10]
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. [10]
Proses transmisi antara sebuah coder dan decoder dapat kita lihat pada gambar
Coder
Decoder Transmission Chanel Source
(Original Message) Coded Message
Destination (Decoded Message)
Gambar 2.5 Coder dan Decoder [10]
2.2.3 Run Length Encoding (RLE)
Mengurangi ukuran karakter string yang berulang [1]. Berulang ini biasa disebut Run.
Biasanya RLE mengkodekan run dari simbol menjadi dua byte, jumlah dan simbol.
RLE dapat memampatkan semua jenis data terlepas dari isi informasi, tetapi isi dari(
data yang akan dikompresi mempengaruhi rasio kompresi. RLE tidak dapat mencapai
rasio kompresi yang tinggi dibandingkan dengan metode kompresi lainnya, tapi.
mudah untuk menerapkan dan cepat untuk mengeksekusi. RLE didukung oleh
sebagian besar format file bitmap seperti tiff, BMP, PCX.
Contoh:
S= 11111111111111100000000000000000001111
Ini dapat direpresentasikan sebagai 1 sebanyak Lima Belas, 0 sebanyak
sembilan belas, dan empat buat 1, yaitu (15,1), (19,0), (4,1). karena pengulangan
jumlah maksimum adalah 19, yang dapat direpresentasikan dengan 5 bit, dapat
dikodekan sebagai bit stream (01111,1), (10011,0), (00100,1) [1].
Contoh dari lain algoritma RLE:
1. KKKKKKK
Adalah perulangan karakter “K” sebanyak 7 kali, ini dapat dikatakan sebagai run
length karena mengulangi karakter yang sebanyak 7 kali.
Adalah contoh yang tidak akurat, karena tidak mengalami perulangan pada setiap
karakternya. Ketujuh karakter diatas merupakan tujuh karakter yang berbeda-beda.
Karakter ini tidak dapat dikatakan sebagai Run Length.
3. ABABBBC
Dari karakter contoh tiga, terdapat perulangan karakter “B” sebanyak 3 kali,
karakter ini sudah dpat dikatakan run length
Teknik dari algoritma run length encoding adalah untuk mempersingkat
penulisan dari sebuah code, untuk penyelesaian dari contoh 1 adalah kita dapat
menuliskan “KKKKKKK” menjadi (‘r’,’7’,’K’) untuk lebih singkat ditulis dengan
“r7k” dengan ketentuan bahwa angka 7 didapatkan karena symbol karaker “k”
mengalami perlangan sebanyak 7 kali.
Penyelesaian untuk contoh dua yaitu ABCDEFG, pada simbol ini tidak dapat
perulangan karakter sehingga penulisannya dapat kita ubah menjadi
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Sebelum dilakukan tahap perancangan sebuah sistem, 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 ditujukan 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
Sistem ini diharapkan dapat membantu menyelesaikan masalah dalam keamanan data,
agar data tersebut tetap tidak dimodifikasi atau dibaca oleh orang yang tidak memiliki
hak akses. Dalam sistem ini file teks akan dienkripsi menggunakan algoritma
Knapsack. Selanjutnya untuk kompresi data teks, dilakukan dengan menggunakan
algoritma RLE. Sehingga diharapkan file teks ini terjaga kemanannya serta ukuran file
dapat lebih kecil dari sebelumnya.
Yang menjadi masalah utama penelitian ini adalah bagaimana mengkombinasikan
keamanannya serta ukuran file dapat lebih kecil dari sebelumnya. Setelah dipilah dan
dibagi dalam beberapa kategori, dapat diuraikan sebagai berikut:
1. User adalah seorang yang melakukan proses bangkit kunci, enkripsi, kompresi,
kombinasi kedua serta dekripsi dan dekompresi.
2. Proses : Sistem ini akan berjalan mengkombinasikan kedua algoritma Knapsack
dan RLE pada file teks yaitu proses Enkripsi kemudian kompresi atau Kompresi
kemudian Enkripsi, dapat juga dilakukan secara terpisah.
3. Sistem : Sistem ini menunjukan kombinasi mana yang lebih tepat digunakan
antara Kompresi dan Enkripsi atau Enkripsi dan Kompresi
Selanjutnya masalah diuraikan kedalam bentuk diagram tulang ikan (ishikawa
Diagram) dibawah ini:
Analisis Kombinasi algoritma Knapsack dan
RLE pada File Teks
Data Kebijakan
Gambar 3.1 Diagram Ishikawa untuk Analisis Permasalan Sistem
3.2 Analisis Persyaratan
Analisis ini bertujuan untuk mengidentifikasi dan menyatakan persyaratan 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 adalah aktifitas dan layanan yang harus diberikan /
disediakan oleh sebuah sistem, dan persyaratan nonfungsional berkaitan dengan fitur,
tidak. Persyaratan nonfungsional seringkali berupa batasan atau sesuatu yang menjadi
perhatian stakeholder sebuah sistem.
3.2.1 Persyaratan fungsional
Persyaratan fungsional yang harus dipenuhi oleh sistem yang akan dibangun ini
adalah :
1. File teks yang akan dienkripsi memiliki format *.txt.
2. Bilangan yang akan dibangkitkan untuk pembuatan kunci algoritma Knapsack
adalah bilangan bulat positif.
3. File teks yang telah dikompresi, dienkripsi, serta keduanya disimpan dalam
format *.txt
4. Kunci kriptografi disimpan dalam bentuk *.txt.
3.2.2 Persyaratan nonfungsional
Persyaratan nonfungsional dari sistem ini adalah :
1. Performa
Perangkat lunak yang akan dibangun harus dapat menunjukkan hasil dari
proses kompresi dan dekompresi, enkripsi dan dekripsi serta keduanya.
2. Mudah dipelajari dan digunakan
Sistem yang akan dibangun harus sederhana 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 dikompresi ,dienkripsi, keduanya dan
kunci yang dibangkitkan.
5. Manajemen kualitas
Sistem memiliki kualitas yang baik yaitu proses kompresi dan
dekompresi,enkripsi dan dekripsi file teks dan membangkitkan kunci relatif
3.3 Pemodelan
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 dibangun.
Berikut ini adalah diagram use case yang dirancang sebagai pemodelan
persyaratan sistem berdasarkan informasi kebutuhan sistem dan aktor yang berperan
didalamnya.
Gamabar 3.2 Use case diagram
3.3.1 Pemodelan persyaratan sistem dengan use case
Dari diagram use case diatas terlihat interaksi user pada sistem beserta proses-proses
yang dilakukan. Diharapkan user mengetahui secara garis besar proses-proses yang
terjadi pada setiap tahapan. Agar tidak terjadi kesalahan dalam urutan tahapan, maka
sistem akan mengevaluasi pilihan-pilihan yang diambil oleh user. Proses enkripsi
menggunakan algoritma Knapsack hanya bisa dilakukan oleh user apabila telah
dilakukan proses pembangkitan kunci berdasarkan inputan yang dimasukkan.
Selanjutnya setelah proses enkripsi selesai, dilakukan proses kompresi dengan
Berikut adalah tabel dari setiap proses.
Tabel 3.1 Spesifikasi Use Case Kompresi (RLE)
Name Kompresi Teks
Actors User
Trigger User telah menginputkan Teks
Preconditions User mengakses tombol Kompresi
Post Conditions User dapat melihat hasil proses kompresi
Success Scenario 1. User telah menginputkan Teks
2. User mengakses tombol Kompresi
3. Sistem akan melakukan proses kompresi terhadap teks
yang diinputkan dan menampilkan hasil kompresi
4. User dapat melihat hasil kompresi
Tabel 3.2 Spesifikasi Use Case Dekompresi (RLE)
Name Dekompresi
Actors User
Trigger User telah menginputkan hasil teks yang telah dikompresi
Preconditions User mengakses tombol Dekompresi
Post Conditions User dapat melihat hasil proses dekompresi
Success Scenario 1. User telah menginputkan hasil teks yang telah dikompresi
2. User mengakses tombol Dekompresi
3. Sistem akan melakukan proses dekompresi terhadap teks
yang diinputkan dan menampilkan hasil dekompresi berupa
bentuk teks asli
Tabel 3.3 Spesifikasi Use Case Bangkit Kunci
Name Generate key
Actors User
Trigger User telah menginputkan parameter kunci
Preconditions User mengakses tombol generate key
Post Conditions User dapat melihat publickey dan privatekey hasil generatekey
Success Scenario 1. User telah menginputkan parameter kunci
2. User mengakses tombol generate key.
3. Sistem membangkitkan key berdasarkan parameter yang
dimasukkan user.
4. User dapat melihat publickey dan privatekey hasil
generatekey.
Alternative Flows -
Tabel 3.4 Spesifikasi Use Case Enkripsi Plainteks (Knapsack)
Name Enkripsi Plainteks
Actors User
Trigger 1. User telah menginputkan plainteks yang akan dienkripsi
2. User telah mendapatkan kunci untuk enkripsi
Preconditions User mengakses tombol enkripsi
Post Conditions User dapat melihat cipherteks hasil proses enkripsi
Success Scenario 5. User telah menginputkan plainteks yang akan dienkripsi.
6. User mengakses tombol load kunci dan tombol enkripsi.
7. Sistem membangkitkan key berdasarkan parameter yang
dimasukkan user.
8. Sistem akan melakukan proses enkripsi terhadap plainteks
yang diinputkan dan menampilkan cipherteksnya.
9. User dapat melihat cipherteks hasil proses enkripsi.
Tabel 3.5 Spesifikasi Use Case Dekripsi Cipherteks (Knapsack)
Name Dekripsi cipherteks
Actors User
Trigger 1. User telah menginputkan cipherteks yang akan didekripsi
2. User telah memasukkan kunci dekripsi (privatekey)
Preconditions User mengakses button decrypt
Post Conditions User dapat melihat plainteks hasil proses dekripsi
Success Scenario 1. User telah menginputkan cipherteks yang akan didekripsi.
2. User telah memasukkan kunci
3. User mengakses tombol dekripsi.
4. Sistem akan melakukan proses dekripsi terhadap ciphertkes
yang diinputkan dan menampilkan plainteksnya.
5. User dapat melihat plainteks hasil proses dekripsi.
Alternative Flows -
Tabel 3.6 Spesifikasi Use Case Kombinasi (Knapsack dan RLE)
Name Kombinasi
Actors User
Trigger User telah menginputkan plainteks
Preconditions User mengakses tombol Kombinasi (Enkripsi dan Kompresi
atau Kompresi dan Enkripsi)
Post Conditions User dapat melihat hasil proses kombinasi
Success Scenario 1. User telah menginputkan plainteks
2. User mengakses tombol Kompresi dan Enkripsi atau
Enkripsi dan Kompresi
3. Sistem akan melakukan proses kombinasi terhadap teks
yang diinputkan dan menampilkan hasil hasil berupa
bentuk chiperteks
4. User dapat melihat hasil kombinas pada kolom yang
3.3.2 Activity diagram
Selain tabel-tabel spesfikasi pada subbab sebelumnya, activity diagram juga bagian dari pemodelan sistem. Berikut adalah activity diagram untuk setiap tabel proses pada subbab sebelumnya.
Dibawah ini Activity Diagram untuk Use Case Kompresi:
User memasukkan file teks
User menekan tombol Kompresi
Sistem mengecek proses yang akan dilakukan
Sistem melakukan Kompresi
Sistem memperlihatkan output Benar
salah
User memasukkan file Kompresi
User menekan tombol Dekompresi
Sistem mengecek proses yang akan dilakukan
Konfirmasi apa yang harus dilakukan user
Sistem melakukan Dekompresi
Sistem memperlihatkan output Benar
salah
Gambar 3.4 Acitvity diagram Dekompresi
User Memasukkan parameter Kunci
User menekan tombol Barisan Kunci Rahasia
Sistem mengecek proses yang dilakukan
Sistem melakukan proses bangkit kunci Rahasia
Sistem menampilkan Kunci rahasia
User menekan tombol Generate
Sistem menampilkan nilai m secara acak dan nilai n secara list
User memasukkan nilai n
Sistem melakukan proses bangkit kunci Rahasia
Sistem melakukan proses bangkit kunci Rahasia
Sistem menampilkan Kunci rahasia User menekan tombol Barisan Kunci Rahasia
Salah
Benar Salah
Benar
Dibawah ini Activity Diagram untuk Use Case Enkripsi:
User memasukkan file Teks
User menekan tombol Enkripsi
Sistem mengecek proses yang akan dilakukan
Sistem melakukan Enkripsi Teks
Sistem memperlihatkan output Benar
salah
Dibawah ini Activity Diagram untuk Use Case Dekripsi:
User memasukkan file Enkripsi
User menekan tombol Dekripsi
Sistem mengecek proses yang akan dilakukan
Sistem melakukan Dekripsi cipherteksi
Sistem memperlihatkan output Benar
salah
Dibawah ini Activity Diagram untuk Use Case Kombinasi:
User memasukkan file Teks
User menekan tombol Kombinasi
Sistem mengecek proses yang akan dilakukan
Sistem melakukan proses kombinasi
Sistem memperlihatkan output Benar
salah
Gamabar 3.8 Activity Diagram Kombinasi
3.3.3 Sequence diagram
Proses enkripsi plainteks menggunakan algoritma Knapsack yang dilakukan oleh
sistem membangkitkan kunci terlebih dahulu kemudian dapat mengenkripsi plainteks.
Kemudian sistem akan mengecek kebutuhan data dan proses yang akan dilakukan
selanjutnya. Sequence Diagram untuk proses kombinasi Kompresi dan Enkripsi
User
:PilihTeks :LoadKunci :Kom_Enk
BrowseTeks
menampilkanTeks
loadKunci Menampilkan Kunci
Kompresi dan Enkripsi
Hasil Kompresi dan Enkripsi (cipherteks)
Kompresi dahulu kemudian enkripsi
Gambar 3.9 Sequence Diagram Kombinasi Kompresi dan Enkripsi
Untuk proses kombinasi Enkripsi dan Kompresi proses sistem sama dengan
gambar 3.9, hanya saja proses enkripsi terlebih dahulu dan kemudian proses
kompresi.
Setelah proses kombinasi dengan kedua algoritma berhasil, kita bisa
melakukan proses kombinasi Dekripsi dan Dekompresi untuk hasil dari Kompresi dan
Enkripsi. Untuk mendapatkan kembali plainteks semula. Sequence diagram untuk
User
:PilihTeks :LoadKunci :DekripsiDekompresi
Browse cipherTeks
menampilkan cipherTeks
loadKunci Menampilkan Kunci
Dekripsi dan Dekompresi
Hasil Dekripsi dan Dekompresi (plainteks)
Dekripsi dahulu kemudian Dekompresi
Gambar 3.10 Sequence Diagram Kombinasi Dekripsi dan Dekompresi
Untuk mengembalikan plainteks pada proses kombinasi Enkripsi dan
Kompresi, proses yang dilakukan adalah kombinasi Dekompresi dan Dekripsi. Proses
sistem tersebut sama dengan gambar 3.10, hanya saja proses Dekompresi terlebih
dahulu dilakukan dan kemudian proses Dekripsi.
Untuk membangkitkan kunci yang digunakan pada algoritma Knapsack
diperlukan parameter yang dimasukkan oleh user. Kemudian sistem akan melakukan
pembangkitan kunci berdasarkan parameter tersebut. Dibawah ini adalah sequence
User
:LoadKunci
input parameter kunci
Bangkit Kunci
Menampilkan Kunci
Gambar 3.11 Sequence Diagram Bangkit Kunci
3.3.4 Perancangan Flowchart Sistem
Perancangan flowchart sistem terdiri dari :
1. Flowchart Proses Algoritma Knapsack
2. Flowchart Proses Algoritma RLE
3. Flowchart Proses Kombinasi
3.3.4.1 Flowchart Proses Algoritma Knapsack
Flowchart proses Enkripsi dengan menggunakan metode Algoritma Knapsack dapat
Mulai
Masukkan Plainteks
Load Kunci Publik
Enkripsi Perkalian setiap plainteks
dengan Kunci Publik
Ciperteks
Akhir
Gambar 3.12 Flowchart Enkripsi
Flowchart proses Dekripsi dengan menggunakan metode Algoritma Knapsack
dapat dilihat pada gambar 3.13.
Mulai
Masukkan cipherteks
Dekripsi Perkalian setiap cipherteks dengan
kunci rahasia
Plainteks
Akhir
3.3.4.2 Flowchart proses algoritma rle
Flowchart proses Kompresi dengan menggunakan metode algoritma RLE
dapat dilihat pada gambar 3.14.
Mulai
Masukkan Plainteks
Kompresi
Hasil Kompresi
Akhir
Gambar 3.14 Flowchart Kompresi
Flowchart proses Dekompresi dengan menggunakan metode algoritma RLE
dapat dilihat pada gambar 3.15.
Mulai
Masukkan hasil Kompresi
Dekompresi
Plainteks
Akhir
3.3.4.3 Flowchart proses kombinasi
Flowchart proses kombinasi Kompresi dan Enkripsi dengan dua metode
algoritma RLE dan Algoritma Knapsack dapat dilihat pada gambar 3.16.
Mulai
Masukkan Plainteks
Kompresi
Enkripsi
Ciperteks
Akhir
Gambar 3.16 Flowchart Kompresi dan Enkripsi
Flowchart proses Enkripsi dan Kompresi dengan dua metode algoritma
Mulai
Masukkan Plainteks
Enkripsi
Kompresi
Hasil Kompresi
Akhir
Gambar 3.17 Flowchart Enkripsi dan Kompresi
Flowchart proses Dekompresi dan Dekripsi dengan dua metode algoritma
Mulai
Masukkan hasil dari
Enkripsi dan kompresi
Dekompresi
Dekripsi
Plainteks
Akhir
Gambar 3.18 Flowchart Dekompresi dan Dekripsi
Flowchart proses Dekripsi dan Dekompresi dengan dua metode algoritma
Mulai
Masukkan hasil dari kompresi
dan Enkripsi
Dekripsi
Dekompresi
Plainteks
Akhir
Gambar 3.19 Flowchart Dekripsi dan Dekompresi
3.4 Perancangan Antar Muka
Perancangan antarmuka adalah rancangan tampilan yang menghubungkan pengguna
(user) dan komputer dengan bantuan program. Salah satu syarat pembuatan antarmuka
adalah berorientasi pada kemudahan dalam penggunaannya (user friendly) serta
informatif.
Rancangan antarmuka aplikasi Kombinasi Algoritma Knapsack dan RLE pada
file Teks dilakukan dengan tools bahasa Matlab 2009. Untuk memudahkan User
dalam mengoperasikan perangkat lunak ini, maka dirancang sebuah User Interface
yaitu sebuah antarmuka menggunakan beberapa rancangan halaman, antara lain:
1. RancanganAntarmuka Form Beranda
3.4.1. Perancangan Form Beranda
Rancangan Form Beranda merupakan tampilan yang pertama kali muncul saat
program dijalankan. Rancangan tab Beranda terlihat seperti pada Gambar 3.18 di
bawah ini.
Beranda
Beranda Menu Bantuan Tentang Keluar
ANALISIS KOMBINASI ALGORITMA KNAPSSACK DAN RLE PADA FILE TEKS
Logo Universitas Sumatera Utara
NAMIRA LISTYA UTAMI TANJUNG 081401093
Gambar 3.20 Form Beranda
3.4.2. Perancangan Form Menu
Pada rancangan Form Menu berfungsi untuk menampilkan beberapa form lainnya
seperti form Bangkit kunci, form Kompresi, form Dekompresi, form Enkripsi, form
Dekripsi, form Kombinasi Algoritma Knapsack dan RLE, form Dekripsi dan
Dekompresi, dan form Dekompresi dan Dekripsi. Form yang dipaparkan hanya
Dekripsi dan Dekompresi, dan form Dekompresi dan Dekripsi pada gambar 3.23
dan 3.24.
a. Perancangan Form Bangkit Kunci
W0 :
W1 :
Distance :
m:
n:
n:
Proses
Simpan
Bersih
Kembali Bangkit Kunci
Beranda Menu Bantuan Tentang Keluar
Bangkit Kunci
Barisan SuperIncreasing
Generate
Gambar 3.21 Form Bangkit Kunci
Keterangan:
1. Button Barisan superincreasing, berfungsi menampilkan kunci rahasia
2. Button Generate, berfungsi menampilkan bilangan acak pada nilai M
b.Perancangan Form Kombinasi
Beranda Menu Bantuan Tentang Keluar
Kombinasi Algoritma Knapsack dan RLE pada File Teks
Gambar 3.22 Form Kombinasi
Keterangan:
1. Button Pilih Teks, berfungsi menampilkan teks yang akan dieksekusi
pada Edit 1
2. Button Load Kunci, berfungsi menampilkan kunci publik
3. Button Kompresi dan Enkripsi, berfungsi menampilkan hasil dari teks
yang telah dikompresi dan dienkripsi pada Edit 2.
4. Button Enkripsi dan Kompresi, berfungsi menampilkan hasil dari teks
yang telah dienkripsi dan dikompresi pada Edit 3.
5. Button Bersih, berfungsi membersihkan/menghapus semuanya
6. Button Kembali, berfungsi keluar dari form tersebut
7. Button Simpan1, berfungsi menyimpan hasil teks yang telah dikompresi
dan dienkripsi
8. Button Simpan2, berfungsi menyimpan hasil teks yang telah dienkripsi
c.Perancangan Form Dekripsi dan Dekompresi
Beranda Menu Bantuan Tentang Keluar
Dekripsi dan Dekompresi
1. Button Pilih Teks, berfungsi menampilkan teks hasil kombinasi
Kompresi dan Enkripsi pada
2. Button Dekripsi dan Dekompresi, berfungsi menampilkan teks yang
telah didekripsi dan dekompresi (teks asli) pada
3. Button Simpan, berfungsi menyimpan hasil dekripsi dan dekompresi.
4.Button Bersih, berfungsi membersihkan/menghapus semuanya
5. Button Kembali, berfungsi keluar dari form tersebut.
Edit 1
Beranda Menu Bantuan Tentang Keluar
Dekompresi dan Dekripsi
1. Button Pilih Teks, berfungsi menampilkan teks hasil kombinasi
Enkripsi dan KOmpresi pada
2. Button Dekompresi dan Dekripsi, berfungsi menampilkan teks yang
telah didekompresi dan dekripsi (teks asli) pada
3. Button Simpan, berfungsi menyimpan hasil dekompresi dan dekripsi
4. Button Bersih, berfungsi membersihkan/menghapus semuanya
BAB 4
IMPLEMENTASI DAN PENGUJIAN
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 matlab dengan menggunakan Matlab 2009. Sistem ini
memiliki 4 Form Utama, yaitu Form Beranda, Form Menu, Form Tentang, dan Form
Bantuan. Form Menu memiliki 8 Form turunan, yaitu Form Kompresi, Form
Dekompresi, Form Bangkit Kunci, Form Enkripsi, Form Dekripsi, Form Kombinasi
Algoritma Knapsack dan RLE, Form Dekripsi dan Dekompresi, dan Form
Dekompresi dan Dekripsi.
4.1.1 Proses tahapan algoritma Knapsack dan RLE
4.1.1.1Proses Bangkit Kunci
Untuk menentukan barisan Kunci rahasia, harus memasukkan parameter sebagai
contoh:
w(1) = 2
w(2) = 3
Parameter tersebut kemudian dimasukkan dalam rumus berikut :
dimana nilai awal itu adalah w(1) = 2. Sehingga didapatkan :
w(3)= 4 + 2 +3 =9
w(4)= (4 + 1)+2 +3 +9 = 19
w(5)= (4 + 2) + 2 +3 +9 + 19 = 39
w(6)= (4 + 3) + 2 +3 +9 + 19 + 39 = 79
w(7)= 4 + 2 +3 +9 + 19 + 39 + 79 = 155
maka dari perhitungan tersebut didapatkan bahwa kunci rahasia adalah
2,3,9,19,39,79,155
Dibawah ini adalah tampilan source code dari proses Bangkit Kunci rahasia:
Gambar 4.1 Source code proses Bangkit Kunci Rahasia
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 = 352
n = 5
dihitung menggunakan rumus:
Keterangan:
Kp = barisan Kunci Publik
w(Kr) = nilai setiap barisan kunci rahasia
Sehingga didapat:
(2.5)mod 352 = 10
(3.5)mod 352 = 15
(9.5)mod 352 = 45
(19.5)mod 352 = 95
(39.5)mod 352 = 195
(79.5)mod 352 = 43
(155.5)mod 352 = 71
Barisan Kunci Publik adalah 10,15, 45, 95, 195, 43, 71.
Dibawah ini adalah tampilan source code dari Bangkit Kunci Publik:
Gambar 4.2 Source Code Proses Bangkit Kunci Publik
4.1.1.2Proses Kompresi dan Enkripsi
Sebagai contoh implementasi dalam kasus ini, misalnya untuk mengenkripsi plainteks
‘AAAAAA’. Maka kita akan mendapatkan :
Kompresi menggunakaan RLE , plainteks “A” mengalami perulangan sebanyak 7
kali maka kompresi dari plainteks “AAAAAAA” adalah A7.
Gambar 4.3 Source Code Kompresi
Untuk mengenkripsi plainteks yang telah dikompresi yaitu A7:
Karakter ‘A’ dalam ASCII mempunyai nilai biner 1000001
Karakter ‘7’ dalam ASCII mempunyai nilai biner 0110111
Blok plainteks ke-1 : 1000001
Kunci publik : 10 15 45 95 195 43 71
Kriptogram : (1x10)+(0x15)+(0x45)+(0x95)+(0x195)+(0x43)+(1x71) = 81
Blok plainteks ke-2 : 0110111
Kunci publik : 10 15 45 95 195 43 71
Kriptogram :(0x10)+(1x15)+(1x45)+(0x95)+(1x195)+(1x43)+(1x71) = 369
Maka cipherteks dari plainteks A7 adalah 81, 369
Berikut adalah tampilan source code dari proses Enkripsi:
Gambar 4.4 Source Code Proses Enkripsi
Jika ingin mengembalikan ke teks semula maka harus dilakukan dekripsi terlebih
dahulu kemudian dekompresi.
Cipherteks dari 81, 369 akan dideskripsikan dengan menggunakan kunci rahasia {2,
n–1 = (1 + 352k)/5
Dengan mencoba k = 0, 1, 2, …, maka untuk k = 2 diperoleh n–1 bilangan bulat, yaitu
n–1 = (1 + 352 ⋅ 2)/5 = 141
Cipherteks dari Contoh sebelumnya adalah 81, 369 . Plainteks yang berkoresponden
diperoleh kembali sebagai berikut:
81 ⋅ 141 mod 352 = 157 = 2 + 155 , berkoresponden dengan 1000001 yaitu A
369⋅ 141 mod 352 = 285 = 3 + 9 + 39 +79 + 155 , berkoresponden dengan 0110111
yaitu 7
Maka diperoleh plainteks A7.
Berikut adalah source code dari proses Dekripsi:
Gambar 4.5 Source Code Proses Dekripsi
A7 bukan merupakan plainteks awal, untuk menentukannya diperlukan dekompresi
yaitu membalikkan perulangannya A adalah objek yang berulang dan 7 adalah nilai
perulangannya, maka diperoleh A sebanyak tujuh kali. Sehingga plainteks awal adalah
“AAAAAAA”.
Gambar 4.6 Source Code Proses Dekompresi
4.1.1.3 Proses Enkripsi dan Kompresi
Proses awal dalam tahap ini adalah enkripsi data terlebih dahulu kemudian kompresi
data. Kunci Publik, Kunci rahasia dan contoh plainteks sam dengan data diatas.
Plainteks = AAAAAA
Kunci Publik = 10 15 45 95 195 43 71
Kunci Rahasia = 2 3 9 19 39 79 155
Nilai m = 352
Nilai n = 5
Nilai n–1 = 141
Enkripsi plainteks :
Blok plainteks A : 1000001
Kunci publik : 10 15 45 95 195 43 71
Kriptogram : (1x10)+(0x15)+(0x45)+(0x95)+(0x195)+(0x43)+(1x71) = 81
Maka cipherteks adalah 81, 81, 81, 81, 81, 81, 81
Kompresi plainteks :
81 mengalami perulangan sebanyak tujuh kali maka kompresiny adalah
81
7
Untuk mengembalikan plainteks awal dilakukan dekompresi data terlebih dahulu
kemudian dekripsi data.