Perancangan Perangkat Lunak Pengaman File Text Menggunakan Algoritma El Gamal dan Kompresi File Tex Menggunakan Algoritma Huffman

(1)

PERANCANGAN PERANGKAT LUNAK PENGAMANAN FILE TEXT MENGGUNAKAN ALGORITMA EL GAMAL DAN KOMPRESI

FILE TEXT MENGGUNAKAN ALGORITMA HUFFMAN

SKRIPSI

RACHMAT SALEH HASIBUAN 111421046

PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA MEDAN


(2)

ii

PERSETUJUAN

Judul : PERANCANGAN PERANGKAT LUNAK PENGAMANAN

FILE TEXT MENGGUNAKAN ALGORITMA ELGAMAL

DAN KOMPRESI FILE TEXT MENGGUNAKAN

ALGORITMA HUFFMAN

Kategori : SKRIPSI

Nama : RACHMAT SALEH HASIBUAN

Nomor Induk Mahasiswa : 111421046

Program Studi : S1 ILMU KOMPUTER

Departemen : ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Jos Timanta Tarigan, S.Kom, M.Kom Ade Candra, ST, M.Kom

NIP. NIP.1979090420091211002

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP.196203171991031001


(3)

PERNYATAAN

PERANCANGAN PERANGKAT LUNAK PENGAMANAN FILE TEXT MENGGUNAKAN ALGORITMA ELGAMAL DAN KOMPRESI FILE TEXT

MENGGUNAKAN ALGORITMA HUFFMAN

SKRIPSI

Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, Agustus 2015

Rachmat Saleh Hasibuan 111421046


(4)

iv

PENGHARGAAN

Puji dan syukur kehadirat Allah SWT, yang hanya dengan rahmat dan izin-Nya penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Ucapan terima kasih penulis sampaikan kepada:

1. Bapak Prof. Drs. Subhilhar, M.A., Ph.D selaku Pejabat Rektor Universitas Sumatera Utara.

2. Bapak Prof. Dr. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara.

4. Bapak Ade Candra, ST, M.Kom. selaku Dosen Pembimbing I dan Bapak Jos Timanta Tarigan, S.Kom, M.Kom selaku Dosen Pembimbing II yang telah memberikan bimbingan, saran dan masukan kepada penulis dalam pengerjaan skripsi ini.

5. Bapak Drs. James Piter Marbun, M.Kom Dosen Pembanding I dan Bapak Amer Sharif, SSi, M.Kom. selaku Dosen Pembanding II yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.

6. Ayah Penulis, Bachtiar Hasibuan, Ibu Penulis, Nurhaida Nasution, abang-kakak Penulis, Afrida Anni Hasibuan, Abdul Rajab Hasibuan, Muhammad Ilyas Hasibuan, Manna Sari Hasibuan dan adik Penulis, Rachmi Hasibuan yang selalu memberikan kasih sayang dan dukungannya kepada penulis.

7. Rekan kuliah terlebih kepada Fatah Abdela Sutara, S.Kom dan Rajab Sihotang, S.Kom, Abdul Kodir Sihotang, S.Kom, Hedi Hermawan, S. Kom dan teman-teman terbaik angkatan 2011 yang tidak dapat disebutkan satu persatu yang selalu memberikan semangat dan dorongan kepada penulis selama menyelesaikan skripsi ini.

8. Rekan Kerja terlebih Kepada bapak Anton Topo Koentoro, Ibu Hidayati Lubis, dan teman teman kerja yang tidak dapat disebutkan satu persatu yang selalu memberikan kesempatan dan mengizinkan untuk dapat melanjutkan kuliah dan menyelesaikan skripsi ini.

Semoga Allah SWT melimpahkan berkahkepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini.Akhirnya, semoga skripsi ini bermanfaat bagi pribadi, keluarga, masyarakat, organisasi dan negara.

Medan, Agustus 2015 Penulis


(5)

ABSTRAK

Dalam komunikasi data, aspek keamanan, kerahasiaan dan efisiensi penyimpanan data sangat diperlukan. Untuk menjaga keamanan, kerahasiaan data tersebut adalah dengan menggunakan kriptografi dan untuk efisiensi penyimpanan data melakukan proses kompresi. Kriptografi merupakan ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentifikasi data. Pengamanan teks dilakukan dengan kriptografi hybrid pada file teks yaitu pertama kali dilakukan enkripsi menggunakan Elgamal, kemudian hasil enkripsi dari Elgamal tersebut di kompresi dengan menggunakan Huffman. Pengujian bilangan prima menggunakan algoritma Miller-Rabin. Implementasi sistem menggunakan bahasa pemrograman C# pada Microsoft Visual Studio 2010. Hasil penelitian menunjukkan bahwa metode Elgamal dapat menjaga keamanan, dan kerahasiaan data. Metode Huffman cukup efisien dalam proses penyimpanan data.


(6)

vi

ABSTRACT

In the data communication, confidentiality and efficiency of data storage are exceptionally important. For safety reason, the confidentiality as well as the efficiency of the data were done by cryptografy and compression respectively. Cryptography, a science focussing on mathematic engineering, related with the aspect of the security of information such as secrecy, validity, integrity, and authentication of data. The security of the text done by hybrid crptografy on the file text was manipulated by encryption applying Elgamal, and then the result was given compression by Huffman. The analysed of prime used Miller-Rabin algorithm. The system implemetation utilized a programming language C# on Microsoft Visual Studio 2010. The result shows that Elgamal method could keep the security as well as the confidentiality of the data. Huffman method was sufficiently efficient in the process data storage..


(7)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrak v

Abstract vi

Daftar Isi vii

Daftar Tabel ix

Daftar Gambar x

Daftar Lampiran xii

Bab 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 2

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 4

Bab 2 Landasan Teori

2.1 Kriptografi 5

2.1.1 Defenisi Kriptografi 5

2.2 Algoritma Elgamal 6

2.2.1 Algoritma Membangkitkan Pasangan Kunci 6

2.2.1.1 Algoritma Miller - Rabin 7

2.2.2 Enkripsi El Gamal 8

2.2.3 Dekripsi Elgamal 8

2.2.4 Contoh Cara Kerja El Gamal 9

2.3 Algoritma Huffman 9

2.3.1 Kompresi Data 11

2.3.2 Dekompresi 12

2.3.3 Pembentukan Pohon Huffman 13

2.3.4 Proses Encoding 15

2.3.5 Proses Decoding 15

2.3.6 Kompleksitas Algoritma Huffman 17

Bab 3 Analisis dan Perancangan

3.1 Analisis Sistem 18

3.1.1 Analisis Masalah 18

3.1.2 Analisis Kebutuhan 19

3.1.2.1 Kebutuhan Fungsional 19

3.1.2.2 Kebutuhan Nonfungsional 19


(8)

viii

3.1.3.1 Use-Case Diagram 20

3.1.3.2 Activity Diagram 21

3.1.3.3 Activity Diagram Proses Enkripsi Elgamal 22 3.1.3.4 Activity Diagram Proses Kompresi Huffman 23 3.1.3.5 Activity Diagram Proses Dekompresi Huffman 24 3.1.3.6 Activity Diagram Proses Dekripsi Elgamal 25

3.1.3.7 Sequence Diagram 26

3.2. Perancangan Sistem 26

3.2.1 Pembuatan Algoritma Program 26

3.2.2. Alur Proses Sistem Secara Umum 27

3.2.3. Alur Proses Enkripsi pada Elgamal 27

3.2.4. Alur Proses Dekripsi pada Elgamal 29

3.2.4.1 Analisis Proses Dekripsi dengan Algoritma Elgamal 29

3.2.5. Alur Proses Kompresi Pada Huffman 30

3.2.5.1 Proses Pembentukan Pohon Huffman 31

3.2.5.2 Proses Encoding 32

3.2.5.3 Proses Decoding 33

3.2.6 Alur Proses Dekompresi Pada Huffman 33

3.3. Perancangan Antar Muka (Interface) 34

3.3.1 Rancangan Halaman Utama 34

3.3.2 Rancangan Halaman Enkripsi Elgamal 35

3.3.3 Rancangan Halaman Kompresi Huffman 37

3.3.4 Rancangan Halaman Dekompresi Huffman 37

3.3.5 Rancangan Halaman Dekripsi Elgamal 38

Bab 4 Implementasi dan Pengujian

4.1. Implementasi 40

4.1.1 Implementasi Proses Enkripsi Menggunakan Algoritma Elgamal 40 4.1.2 Implementasi Proses Kompresi Menggunakan Algoritma Huffman 42 4.1.3 Implementasi Proses Dekompresi Menggunakan

Algoritma Huffman 45

4.1.4 Implementasi Proses Dekripsi Menggunakan Algoritma Elgamal 46

4.1.5 Tampilan Form Tentang 48

4.2. Pengujian 49

4.2.1 Pengujian Enkripsi Elgamal 50

4.2.2 Pengujian Kompresi Huffman 53

4.2.3 Pengujian Dekompresi Huffman 55

4.2.4 Pengujian Dekripsi Elgamal 57

Bab 5 Kesimpulan dan Saran

5.1. Kesimpulan 60

5.2. Saran 61


(9)

DAFTAR TABEL

Halaman

2.1 Kode Huffman untuk Karakter “ABCD” 15

3.1 Tabel 3.1 Jumlah Frequensi dan Bit Sebelum Proses Kompresi

Untuk Karakter “RACHMAT” 31

3.2 Tabel 3.2 Jumlah Frequensi dan Bit Setelah Proses Kompresi

Untuk Karakter “RACHMAT” 32

4.1 Tabel 4.1 Jumlah Frequensi dan Bit Sebelum Proses Kompresi Untuk Karakter

“RACHMAT” 43

4.2 Tabel 4.2 Jumlah Frequensi dan Bit Setelah Proses Kompresi Untuk

Karakter “RACHMAT” 44


(10)

x

DAFTAR GAMBAR

Halaman

2.1 Alur Teknik LosslessKompresi-Dekompresi Data 13

2.2 Pohon Huffman untuk Karakter “ABACCDA” 14

2.3 Proses Decoding dengan Menggunakan Pohon Huffman 16

3.1 Diagram Ishikawa Masalah Penelitian 20

3.2 Use-Case Diagram Pada Sistem 21

3.3 Activity Diagram Proses Enkripsi Elgamal 22

3.4 Activity Diagram Proses Kompresi Huffman 23

3.5 Activity Diagram Proses Dekompresi Huffman 24

3.6 Activity Diagram Proses Dekripsi Elgamal 25

3.7 Sequence Diagram 26

3.8 Flowchart Gambaran Umum Sistem 27

3.9 Flowchart Enkripsi pada Elgamal 28

3.10 Flowchart Dekripsi pada Elgamal 29

3.11 Diagram Blok Proses Elgamal 30

3.12 Flowchart Kompresi Huffman 30

3.13 Pohon Huffman untuk Karakter “RACHMAT” 32

3.14 Proses Decoding dengan Menggunakan Pohon Huffman 33

3.15 Flowchart Dekompresi Huffman 34

3.16 Rancangan Antarmuka Halaman Menu Utama 35

3.17 Rancangan Halaman Enkripsi Elgamal 36

3.18 Rancangan Halaman Kompresi Huffman 37

3.19 Rancangan Halaman Dekompresi Huffman 37

3.20 Rancangan Halaman Dekripsi Elgamal 38

4.1 File Teks Input Dengan Ekstensi docx 40

4.2 Proses Kompresi Kompresi 42

4.3 File Teks Hasil Kompresi dengan Ekstensi .hmc 43


(11)

4.5 Proses Dekompresi 45 4.6 File Teks Hasil Dekompresi dengan Ekstensi .elgmc 45

4.7 Proses Dekripsi 46

4.8 File Teks Hasil Dekripsi dengan Ekstensi .docx 48

4.9 Tampilan Halaman Tentang 48

4.10 Tampilan Halaman Utama 49

4.11 Pop-up Window Open 50

4.12 Tampilan Pembangkit Kunci dan Input file Teks 51

4.13 File Teks Setelah Proses Enkripsi 52

4.14 Proses Penyimpanan File Hasil Enkripsi Elgamal 52

4.15 Pop-up Window Open 53

4.16 Proses Penyimpanan Hasil Kompresi *.hmt 54

4.17 Proses Penyimpanan Hasil Kompresi *.hmc 54

4.18 Pop-up Window Open 55

4.19 Proses Dekompresi *.hmc 56

4.20 Proses Dekompresi *.hmt 56

4.21 Proses Penyimpanan File Hasil Dekompresi .elgmc 57

4.22 Pop-up Window Open 57

4.23 Tampilan Kunci Private dan Input file Teks 58

4.24 Setelah Proses Dekripsi 58


(12)

xii

DAFTAR LAMPIRAN

Halaman

A. Listing Program A-1


(13)

ABSTRAK

Dalam komunikasi data, aspek keamanan, kerahasiaan dan efisiensi penyimpanan data sangat diperlukan. Untuk menjaga keamanan, kerahasiaan data tersebut adalah dengan menggunakan kriptografi dan untuk efisiensi penyimpanan data melakukan proses kompresi. Kriptografi merupakan ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentifikasi data. Pengamanan teks dilakukan dengan kriptografi hybrid pada file teks yaitu pertama kali dilakukan enkripsi menggunakan Elgamal, kemudian hasil enkripsi dari Elgamal tersebut di kompresi dengan menggunakan Huffman. Pengujian bilangan prima menggunakan algoritma Miller-Rabin. Implementasi sistem menggunakan bahasa pemrograman C# pada Microsoft Visual Studio 2010. Hasil penelitian menunjukkan bahwa metode Elgamal dapat menjaga keamanan, dan kerahasiaan data. Metode Huffman cukup efisien dalam proses penyimpanan data.


(14)

vi

ABSTRACT

In the data communication, confidentiality and efficiency of data storage are exceptionally important. For safety reason, the confidentiality as well as the efficiency of the data were done by cryptografy and compression respectively. Cryptography, a science focussing on mathematic engineering, related with the aspect of the security of information such as secrecy, validity, integrity, and authentication of data. The security of the text done by hybrid crptografy on the file text was manipulated by encryption applying Elgamal, and then the result was given compression by Huffman. The analysed of prime used Miller-Rabin algorithm. The system implemetation utilized a programming language C# on Microsoft Visual Studio 2010. The result shows that Elgamal method could keep the security as well as the confidentiality of the data. Huffman method was sufficiently efficient in the process data storage..


(15)

BAB 1 PENDAHULUAN

1.1. Latar Belakang

Dalam sejarah perkembangan kriptografi, pesan rahasia dalam bentuk teks merupakan bentuk pesan rahasia paling awal. Dalam perkembangan selanjutnya, teknik enkripsi pesan rahasia dalam bentuk teks berganti dari teknik sederhana seperti Caesar Cipher hingga enkripsi yang berbasis digital. Seiring perkembangan teknologi, teknik dan metode penyampaian pesan rahasia pun semakin beragam. Berbagai bentuk pesan rahasia di samping pesan teks seperti pesan citra, pesan audio, dan pesan video sudah umum digunakan. Seperti halnya pesan teks dalam menjaga kerahasiaannya, pesan non teks juga memerlukan teknik-teknik enkripsi yang sebisa mungkin sederhana tapi sukar dipecahkan. Sebagai contoh, hal yang sudah dilakukan dalam kriptografi teks adalah mengenkripsi teks ke dalam bentuk kata sandi dengan algoritma tertentu.

Salah satu algoritma enkripsi yang lazim digunakan adalah algoritma El Gamal.

Konsep dasar El Gamal adalah menggunakan metode asimetrik [Munir, Rinaldi. 2006]. Selanjutnya setelah file surat dienkripsi, maka dibutuhkan suatu media penyimpanan terhadap hasil enkripsi tersebut. Media penyimpanan yang dibutuhkan untuk menyimpan suatu citra digital sering tidak mencukupi, sehingga dibutuhkan suatu proses kompresi atas hasil enkripsi.

Salah satu algoritma kompresi yang umum digunakan adalah Algoritma Huffman. Algoritma Huffman bersifat lossless dimana hasil kompresi tidak dapat dibaca, sehingga harus didekompresi dan hasilnya tepat sama seperti data sebelum dikompresi. Algoritma ini bekerja berdasarkan sederetan karakter yang berurutan [Mathur, M. K., Loonker, S. & Saxena, D. 2012]. Berdasarkan uraian di atas, maka penulis bermaksud untuk merancang suatu perangkat lunak yang dapat berguna untuk mengamankan dokumen digital yang berbentuk teks dengan algoritma enkripsi El Gamal dan dikompresi dengan algoritma


(16)

2

1.2. Rumusan Masalah

Rumusan masalah dalam penelitian ini adalah bagaimana:

1. Melakukan pengamanan file text menggunakan algoritma El Gamal

2. Melakukan efisiensi dalam penyimpanan data berupa file text menggunakan algoritma Huffman.

1.3. Batasan Masalah

Adapun yang menjadi batasan masalah dalam penelitian ini adalah:

1. Algoritma enkripsi yang digunakan adalah El Gamal. 2. Algoritma kompresi yang digunakan adalah Huffman.

3. Format dokumen digital yang dapat dienkripsi dan dikompresi adalah yang berekstensi *.txt dan *.doc (file .doc hanya berupa teks).

4. Bahasa pemrograman yang digunakan adalah pemrograman C#

5. Bilangan yang digunakan dalam pembangkit bilangan adalah bilangan prima yang sudah di uji menggunakan algoritma Miller - Rabin.

1.4. Tujuan Penelitian

Penelitian ini bertujuan untuk melakukan pengamanan terhadap file text dengan mengenkripsi dan mendekripsi dan melakukan efisiensi dalam penyimpanan data berupa file text dengan cara mengkompresi file text tersebut sehingga dapat aman dan efisien dalam hal penyimpanan data.

1.5. Manfaat Penelitian

Penelitian ini diharapkan dapat bermanfaat bagi pengelola sistem informasi serta pihak-pihak yang membutuhkan untuk keamanan dan efisiensi penyimpanan data, dan juga bisa bermanfaat bagi orang-orang yang ingin mengembangkan penelitian di bidang kemananan dan efisiensi penyimpanan data.


(17)

1.6. Metode Penelitian

Adapun tahapan-tahapan yang dilakukan dalam merancang dan mengembangkan perangkat lunak ini adalah sebagai berikut:

1. Studi Literatur

Mempelajari teori tentang enkripsi dan dekripsi dokumen digital dengan menggunakan algoritam El Gamal serta teori-teori mengenai kompresi data untuk dokumen digital dengan algoritma Huffman.

2. Analisis dan Perancangan

Pada tahap ini dilakukan untuk menganalisis proses kerja pengamanan dan kompresi file menggunakan algoritma El Gamal dan Huffman, dan selanjutnya dilakukan perancangan sistem yang meliputi perancangan proses kerja sistem, perancangan

interface, serta algoritma pemrograman. 3. Implementasi

Tahap ini digunakan mengimplementasikan hasil analisis dan perancangan sistem ke dalam bahasa pemograman agar bisa digunakan untuk pengamanan dan kompresi file dengan algoritma El Gamal serta Huffman.

4. Pengujian

Tahap ini digunakan untuk menguji coba sistem yang dibuat untuk mengetahui sudah berjalan sesuai dengan tujuan penelitian atau tidak, serta kelebihan dan kelemahannya. 5. Dokumentasi

Tahap ini digunakan untuk menuangkan hasil penelitian tersebut ke dalam sebuah skripsi.

1.7. Sistematika Penulisan

Sistematika penulisan skripsi ini terdiri dari beberapa bagian, yaitu:

BAB 1: PENDAHULUAN

Bab ini berisi latar belakang masalah, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian dan sistematika penulisan skripsi.

BAB 2: LANDASAN TEORI

Bab ini berisi teori-teori yang berkaitan dengan kriptografi, algoritma El Gamal, dan algoritma Huffman


(18)

4

BAB 3 : ANALISIS DAN PERANCANGAN SISTEM

Bab ini berisi proses pembuatan algoritma program, UML, flowchart sistem, rancangan aplikasi, dan pembuatan user interface aplikasi.

BAB 4 : IMPLEMENTASI DAN PENGUJIAN

Bab ini berisi ulasan dan pengujian terhadap program yang telah diimplementasikan dengan menggunakan bahasa pemrograman C#.

BAB 5: KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan yang didapat dalam menjalani penelitian ini dan saran yang yang berguna dalam usaha untuk melakukan perbaikan dan pengembangan penelitian ini.


(19)

BAB 2

LANDASAN TEORI

2.1. Kriftografi

2.1.1. Definisi Kriptografi

Kriptografi (Crypthography) berasal dari bahasa Yunani yaitu dari dua suku kata Crypto dan

Graphia. Crypto artinya menyembunyikan, sedangkan graphia artinya ilmu. Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data, yang dilakukan oleh seorang Kriptographer [Ariyus, Dony. 2008].

Dalam kriptografi, setiap orang dimungkinkan untuk bebas memilih metode untuk merahasiakan pesan. Metode tersebut berbeda-beda untuk setiap pelaku kriptografi sehingga penulisan pesan rahasia mempunyai estetika tersendiri. Estetika penulisan pesan rahasia ini menjadikan kriptografi sebagai sebuah seni. Pada perkembangan selanjutnya, kriptografi dikenal sebagai disiplin ilmu yang menggunakan teknik matematika untuk keamanan informasi, seperti privasi dan autentikasi.

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi, yaitu [Schneier, Bruce. 1996]:

1. Kerahasiaan (Confidentiality)

Kerahasiaan adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi.

2. Integritas Data (Data Integrity)

Integritas adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.


(20)

6

3. Otentikasi (Autentication)

Otentikasi adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri, dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.

4. Ketiadaan Penyangkalan (Non-repudiation).

Ketiadaan penyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman terciptanya suatu informasi oleh yang mengirimkan/membuat.

2.2. Algoritma El Gamal

El Gamal merupakan suatu sistem kriptografi asimetris, yang pertama kali ditemukan oleh Taher El Gamal pada tahun 1984. Algoritma ini pada mulanya digunakan untuk digital signature, namun kemudian dimodifikasi sehingga bisa digunakan untuk enkripsi dan dekripsi [Mollin, R. A. 2007].

2.2.1. Algoritma Membangkitan Pasangan Kunci

1. Pilih bilangan prima p ( p harus dites melalui primality test untuk membukitkan merupakan bilangan prima atau tidak, p dapat di-share di antara anggota kelompok). 2. Pilih dua buah bilangan acak, g dan x, dengan syarat g<p dan 1 x p– 2.

3. Hitung y = gx mod p [Schneier, Bruce. 1996]. Hasil dari algoritma ini:

a. Kunci public: tripel (y, g, p) b. Kunci privat: pasangan (x, p)

2.2.1.1. Algoritma Miller - Rabin

Algoritma pengujian bilangan prima ini juga disebut algoritma Selfridge-Miller-Rabin atau

strong prime test. Ini merupakan penyempurnaan dari algoritma Fermat, dan bekerja dengan sangat baik dalam praktiknya. Algoritma ini dikembangkan oleh Michael Rabin yang didasarkan pada sebagian ide Gary Miller (Schneier, 1996). Sampai saat ini algoritma pengujian bilangan prima yang banyak dipakai dalam sistem kriptografi adalah algoritma


(21)

probabilistik Miller-Rabin yang memiliki komputasi yang ringan dan memberikan probabilitas yang tinggi. Berikut ini adalah algoritma Miller-Rabin (Cormen, et al. 2009).

Langkah 1: Pilih bilangan yang ingin diuji keprimaannya n, dimana n≥3 dan n

merupakan bilangan ganjil (nmod 2 ≠ 0).

Langkah 2: Hitung n-1 = u2t, dimana u adalah bilangan ganjil dan t≥1.

Representasi bilangan biner dari n-1 adalah representasi biner dari bilangan ganjil u yang diikuti oleh bit 0 sebanyak t.

Langkah 3: Uji n yang akan diperiksa keprimaannya dengan bilangan integer sembarang a, dimana 2≤an-1 sebanyak s kali. Jika pengujian sudah sampai s kali, maka lanjutkan ke Langkah 6.

Langkah 4: Hitung ≡au (mod n).

Langkah 5: Hitung sebanyak t kali dimana 1≤it. Jika , 1 (mod n) dan ≢n-1 maka hentikan algoritma dengan menyatakan n adalah bilangan komposit. Selain dari itu, maka lanjut ke Langkah 3.

Langkah 6: Jika , maka hentikan algoritma dengan menyatakan n

adalah bilangan komposit. Jika tidak, maka hentikan algoritma dan nyatakan n adalah kemungkinan bilangan prima.

Contoh :

Langkah 1: misalnya bilangan prima n = 11 Langkah 2: n-1 = u2t

11 – 1 = u2¹ 10 = u2 2u = 10 u = 5

Langkah 3: misalkan a = 4 Langkah 4: ≡au (mod n)

mod n = au

mod n = 45 mod n = 1024

= 1024 mod 11 = 1


(22)

8

2.2.2. Enkripsi El Gamal

Berikut adalah langkah mengenkripsi sebuah pesan pada algoritma El Gamal [Munir, Rinaldi. 2006],

1. Susun plainteks menjadi blok-blok m1, m2, …, (nilai setiap blok di dalam selang

[0, p– 1].

2. Pilih bilangan acak k, yang dalam hal ini 1 k p– 2.

3. Setiap blok m dienkripsi dengan rumus [Munir, Rinaldi. 2006]:

a = gk mod p b = ykm mod p

Pasangan a dan b adalah cipherteks untuk blok pesan m. Jadi, ukuran cipherteks dua kali ukuran plainteksnya [Munir, Rinaldi. 2006].

2.2.3. Dekripsi El Gamal

Berikut ini adalah langkah-langkah dalam mendekripsi sebuah pesan plaintext dengan menggunakan algoritma El Gamal [Munir, Rinaldi. 2006],

1. Gunakan kunci privat x untuk menghitung (ax)– 1 = ap – 1 – x mod p

2. Hitung plainteks m dengan persamaan [Munir, Rinaldi. 2006]:

m = b/ax mod p = b (ax)– 1 mod p

2.2.4. Contoh Cara Kerja El Gamal

Berikut ini ada contoh cara kerja El Gamal dalam mengenkripsi dan mendekripsi sebuah pesan, sebagai berikut:

p = bilangan prima k = bilangan acak

m = plaintext

a dan b = chiperteks

x = bilangan acak Misal p = 2357, g = 2 dan x = 1751.

Hitung: y = gx mod p = 21751 mod 2357 = 1185

Hasil: Kunci public: (y = 1185, g = 2, p = 2357) Kunci privat: (x = 1751, p = 2357).

Misal Bob memilih bilangan acak k = 1520 (nilai k masih berada di dalam selang [0, 2357 – 1]).


(23)

Bob menghitung

a = gk mod p = 21520 mod 2357 = 1430

b = ykm mod p= 11851520 (2035) mod 2357 = 697

Jadi, cipherteks yang dihasilkan adalah (1430, 697). Bob mengirim cipherteks ini ke Alice, oleh alice 1/ax = (ax)– 1 = a p – 1 – x mod p = 1430605 mod 2357 = 872

m = b/ax % p = 697 (872) mod 2357 = 2035

2.3. Algoritma Huffman

Algoritma Huffman adalah salah satu algoritma kompresi. Algoritma huffman merupakan algoritma yang paling terkenal untuk mengompres teks. Terdapat tiga fase dalam menggunakan algoritma Huffman untuk mengompres sebuah teks, pertama adalah fase pembentukan pohon Huffman, kedua fase encoding dan ketiga fase decoding. Pengkodean Huffman adalah teknik untuk mengompresi data. Algoritma greedy Huffman melihat terjadinya masing-masing karakter dan sebagai string biner secara optimal Huffman coding

adalah bentuk coding statistik yang mencoba untuk mengurangi jumlah bit yang diperlukan untuk merepresentasikan string dari simbol [Mathur, M. K., Loonker, S. & Saxena, D. 2012].

Prinsip yang digunakan oleh algoritma Huffman adalah karakter yang sering muncul di-encoding dengan rangkaian bit yang pendek dan karakter yang jarang muncul di-encoding

dengan rangkaian bit yang lebih panjang. Teknik kompresi algoritma Huffman mampu memberikan penghematan pemakaian memori sampai 30%. Algoritma Huffman mempunyai kompleksitas O (n log n) untuk himpunan dengan n karakter. Algoritma Huffman, yang dibuat oleh seorang mahasiswa MIT bernama David Huffman pada tahun 1952, merupakan salah satu metode paling lama dan paling terkenal dalam kompresi teks. Algoritma Huffman menggunakan prinsip pengkodean yang mirip dengan kode Morse, yaitu tiap karakter (simbol) dikodekan hanya dengan rangkaian beberapa bit, dimana karakter yang sering muncul dikodekan dengan rangkaian bit yang pendek dan karakter yang jarang muncul dikodekan dengan rangkaian bit yang lebih panjang [Mathur, M. K., Loonker, S. & Saxena, D. 2012].

Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi data yang diinputkan) menjadi sekumpulan codeword, algoritma Huffman termasuk kedalam kelas algoritma yang menggunakan metode statik. Metode statik adalah metode yang selalu menggunakan peta kode yang sama, metode ini membutuhkan dua fase (two-pass): fase pertama untuk menghitung probabilitas kemunculan tiap simbol dan menentukan peta-


(24)

10

kodenya, dan fase kedua untuk mengubah pesan menjadi kumpulan kode yang akan ditransmisikan. Sedangkan berdasarkan teknik pengkodean simbol yang digunakan, algoritma Huffman menggunakan metode symbolwise. Metode symbolwise adalah metode yang menghitung peluang kemunculan dari setiap simbol dalam satu waktu, dimana simbol yang lebih sering muncul diberi kode lebih pendek dibandingkan simbol yang jarang muncul.

Metode Huffman Dinamis merupakan kelanjutan dari metode Huffman statis dengan menambah atau mengurangi suatu proses tertentu pada metode Huffman statis. Ide dasar dari metode ini adalah meringkas tahapan metode Huffman tanpa perlu menghitung jumlah karakter keseluruhan dalam membangun pohon biner.

Metode Huffman dinamis adalah suatu metode dengan kemungkinan kemunculan dari setiap simbol tidak dapat ditentukan dengan pasti selama pengkodean. Hal ini disebabkan oleh perubahan pengkodean secara dinamis berdasarkan frekuensi dari simbol yang telah diolah sebelumnya. Metode ini dikembangkan oleh trio Faller, Gallager dan Knuth, kemudian dikembangkan lebih lanjut oleh Vitter [Merdiyan, Meckah dan Wawan Indarto, 2007].

2.3.1. Kompresi Data

Kompresi data dalam bidang ilmu komputer, ilmu pengetahuan dan seni adalah sebuah penyajian informasi kedalam bentuk yang lebih sederhana [Arizka, R. U. 2011]. Kompresi data dapat diartikan juga sebagai proses yang dapat mengubah sebuah aliran data masukan (sumber atau data asli) kedalam aliran data yang lain (keluaran atau data yang dikompresi) yang memiliki ukuran yang lebih kecil.

Metode kompresi data dapat dikelompokkan dalam dua kelompok besar yaitu metode lossless

dan metode lossy yaitu: 1. Metode lossless

Pada teknik ini tidak ada kehilangan informasi. Jika data dikompresi secara lossless, data asli dapat direkonstruksi kembali sama persis dari data yang telah dikompresikan, dengan kata lain data asli tetap sama sebelum dan sesudah kompresi. Secara umum teknik

lossless digunakan untuk penerapan yang tidak bisa mentoleransi setiap perbedaan antara data asli dan data yang telah direkonstruksi. Data berbentuk tulisan misalnya file teks, harus dikompres menggunakan teknik lossless, karena kehilangan sebuah karakter saja dapat mengakibatkan kesalahpahaman. Lossless compression disebut juga dengan

reversible compression karena data asli bisa dikembalikan dengan sempurna, akan tetapi rasio kompresinya rendah, misalnya pada data teks, gambar seperti GIF dan PNG, contoh


(25)

-metode ini adalah Shannon-Fano Coding, Huffman Coding, Arithmetic Coding, Run Length Encoding dan lain sebagainya [Arizka, R. U. 2011].

2. Metode lossy

Pada teknik ini akan terjadi kehilangan sebagian informasi. Data yang telah dimanfaatkan dengan teknik ini secara umum tidak bisa direkonstruksi sama persis dari data aslinya. Di dalam banyak penerapan, rekonstruksi yang tepat bukan suatu masalah.

Sebagai contoh, ketika sebuah sample suara ditransmisikan, nilai eksak dari setiap

sample suara belum tentu diperlukan, tergantung pada yang memerlukan kualitas suara yang direkonstruksi, sehingga banyaknya jumlah informasi yang hilang di sekitar nilai dari setiap

sample dapat ditoleransi. Biasanya teknik ini membuang bagian-bagian data yang sebenarnya tidak begitu berguna, tidak begitu dirasakan, tidak begitu dilihat sehingga manusia masih beranggapan bahwa data tersebut masih bisa digunakan walaupun sudah dikompresi, misalnya pada gambar dan MP3, contoh metode ini adalah Transform Coding, Wavelet, dan lain-lain. Lossy compression disebut juga irreversible compression karena data asli mustahil untuk dikembalikan seperti semula. Kelebihan teknik ini adalah rasio kompresi yang tinggi dibanding metode lossless.

Keuntungan dari metode lossy atas lossless adalah dalam beberapa kasus metode lossy

menghasilkan file kompresi yang lebih kecil dibandingkan dengan metode lossless. Metode

lossy sering digunakan untuk mengkompresi suara, gambar dan video karena data tersebut dimaksudkan kepada human interpretation dimana pikiran dapat dengan mudah “mengisi

bagian-bagian yang kosong” atau melihat kesalahan yang sangat kecil atau inkonsistensi. Sedangkan lossless digunakan untuk mengkompresi data untuk diterima ditujuan dalam kondisi asli seperti dokumen teks. Lossy akan mengalami generation loss pada data sedangkan pada lossless tidak terjadi karena data yang hasil dekompresi sama dengan data asli.

2.3.2. Dekompresi

Sebuah data yang sudah dikompresi dengan teknik lossless harus dapat dikembalikan lagi kebentuk aslinya, prinsip ini dinamakan dekompresi. Untuk dapat merubah data yang terkompres diperlukan cara yang berbeda seperti pada waktu proses kompresi dilaksanakan. Jadi pada saat dekompresi catatan header yang berupa byte-byte tersebut terdapat catatan isi mengenai file tersebut. Catatan header akan menuliskan kembali mengenai isi dari file


(26)

12

tersebut, jadi isi dari file sudah tertulis oleh catatan header sehingga hanya tinggal menuliskan kembali pada saat proses dekompresi.

Secara umum proses kompresi dan dekompresi lossless dapat dilihat pada gambar 2.1.

Kompresi Dekompresi

Gambar 2.1 Alur Teknik lossless Kompresi-Dekompresi Data

2.3.3. Pembentukan Pohon Huffman

Kode Huffman pada dasarnya merupakan kode prefiks (prefix code). Kode prefiks adalah himpunan yang berisi sekumpulan kode biner, dimana pada kode prefik ini tidak ada kode biner yang menjadi awal bagi kode biner yang lain. Kode prefiks biasanya direpresentasikan sebagai pohon biner yang diberikan nilai atau label. Untuk cabang kiri pada pohon biner diberi label 0, sedangkan pada cabang kanan pada pohon biner diberi label 1. Rangkaian bit yang terbentuk pada setiap lintasan dari akar ke daun merupakan kode prefiks untuk karakter yang berpadanan. Pohon biner ini biasa disebut pohon Huffman.

Langkah-langkah pembentukan pohon Huffman adalah sebagai berikut:

1. Baca semua karakter di dalam teks untuk menghitung frekuensi kemunculan setiap karakter. Setiap karakter penyusun teks dinyatakan sebagai pohon bersimpul tunggal. Setiap simpul di-assign dengan frekuensi kemunculan karakter tersebut.

2. Terapkan strategi algoritma greedy sebagai berikut: gabungkan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah akar. Setelah digabungkan akar tersebut akan mempunyai frekuensi yang merupakan jumlah dari frekuensi dua buah pohon-pohon penyusunnya.

3. Ulangi langkah 2 sampai hanya tersisa satu buah pohon Huffman, agar pemilihan dua pohon yang akan digabungkan berlangsung cepat, maka semua yang ada selalu terurut menaik berdasarkan frekuensi.

Sebagai contoh, dalam kode ASCII string 7 huruf “ABACCDA” membutuhkan representasi

7 × 8 bit = 56 bit (7 byte), dengan rincian sebagai berikut: Data Asli

(.txt, .doc)

Data Hasil Kompresi(Huffman)


(27)

A = 01000001 B = 01000010 A = 01000001 C = 01000011 C = 01000011 D = 01000100 A = 01000001

Pada string di atas, frekuensi kemunculan A = 3, B = 1, C = 2, dan D = 1,

Gambar 2.2 Pohon Huffman untuk Karakter “ABACCDA” 2.3.4. Proses Encoding

Encoding adalah cara menyusun string biner dari teks yang ada. Proses encoding untuk satu karakter dimulai dengan membuat pohon Huffman terlebih dahulu. Setelah itu, kode untuk satu karakter dibuat dengan menyusun nama string biner yang dibaca dari akar sampai ke daun pohon Huffman.

Langkah-langkah untuk mengencoding suatu string biner adalah sebagai berikut: 1. Tentukan karakter yang akan di-encoding


(28)

14

2. Mulai dari akar, baca setiap bit yang ada pada cabang yang bersesuaian sampai ketemu daun dimana karakter itu berada

3. Ulangi langkah 2 sampai seluruh karakter di encoding

Sebagai contoh kita dapat melihat tabel dibawah ini, yang merupakan hasil encoding

untuk pohon Huffman pada tabel 2.1.

Tabel 2.1 Kode Huffman untuk Karakter “ABCD” Karakter String Biner Huffman

A 0

B 110

C 10

D 111

2.3.5. Proses Decoding

Decoding merupakan kebalikan dari encoding. Decoding berarti menyusun kembali data dari

string biner menjadi sebuah karakter kembali. Decoding dapat dilakukan dengan dua cara, yang pertama dengan menggunakan pohon Huffman dan yang kedua dengan menggunakan tabel kode Huffman.

Langkah-langkah men -decoding suatu string biner dengan menggunakan pohon Huffman adalah sebagai berikut:

1. Baca sebuah bit dari string biner. 2. Mulai dari akar.

3. Untuk setiap bit pada langkah 1, lakukan traversal pada cabang yang bersesuaian. 4. Ulangi langkah 1, 2 dan 3 sampai bertemu daun. Kodekan rangkaian bit yang telah

dibaca dengan karakter di daun.

5. Ulangi dari langkah 1 sampai semua bit di dalam string habis. Sebagai contoh kita akan men-decoding string biner yang bernilai ”111”


(29)

Gambar 2.3 Proses Decoding dengan Menggunakan Pohon Huffman

Setelah kita telusuri dari akar, maka kita akan menemukan bahwa string yang mempunyai kode Huffman “111” adalah karakter D.

Cara yang kedua adalah dengan menggunakan tabel kode Huffman. Sebagai contoh kita akan menggunakan kode Huffman pada Tabel 1 untuk merepresentasikan string

“ABACCDA”. Dengan menggunakan Tabel 1 string tersebut akan direpresentasikan menjadi rangkaian bit: 0 110 0 10 10 1110. Jadi, jumlah bit yang dibutuhkan hanya 13 bit. Dari Tabel 1 tampak bahwa kode untuk sebuah simbol/karakter tidak boleh menjadi awalan dari kode simbol yang lain guna menghindari keraguan (ambiguitas) dalam proses dekompresi atau

decoding, karena tiap kode Huffman yang dihasilkan unik, maka proses decoding dapat dilakukan dengan mudah. Contoh: saat membaca kode bit pertama dalam rangkaian bit “011001010110”, yaitu bit “0”, dapat langsung disimpulkan bahwa kode bit “0” merupakan pemetaan dari simbol “A”. Kemudian baca kode bit selanjutnya, yaitu bit “1”. Tidak ada kode Huffman “1”, lalu baca kode bit selanjutnya, sehingga menjadi “11”. Tidak ada juga kode Huffman “11”, lalu baca lagi kode bit berikutnya, sehingga menjadi “110”. Rangkaian kode bit “110” adalah pemetaan dari simbol “B”.

2.3.6. Kompleksitas Algoritma Huffman

Algoritma Huffman mempunyai kompleksitas waktu O (n log n), karena dalam melakukan sekali proses itersi pada saat penggabungan dua buah pohon yang mempunyai frekuensi terkecil pada sebuah akar membutuhkan waktu O (log n), dan proses itu dilakukan berkali-kali sampai hanya tersisa satu buah pohon Huffman itu berarti dilakukan sebanyak n kali.


(30)

BAB 3

ANALISIS DAN PERANCANGAN

3.1. Analisis Sistem

Analisis sistem terdiri dari fase-fase berbeda yang mendeskripsikan pengembangan sistem. Dalam tugas akhir ini, ada dua fase analisis yaitu: analisis masalah, dan analisis kebutuhan. Analisis masalah bertujuan untuk memahami kelayakan masalah. Analisis kebutuhan dilakukan untuk menjelaskan fungsi-fungsi yang ditawarkan dan mampu dikerjakan sistem.

3.1.1. Analisis Masalah

Untuk dapat mengurangi ancaman yang dapat terjadi dalam pertukaran informasi yang bersifat rahasia dalam sebuah proses komunikasi data dapat dilakukan dengan cara melakukan pengkodean terhadap informasi yang akan disimpan atau dikirim. Masalah penelitian ini secara umum ditunjukkan pada gambar 3.1, yaitu diagram Ishikawa (fishbone/cause and effect diagram).

Gambar 3.1 Diagram Ishikawa Masalah Penelitian

Machine Method

Man

Sistem Pengamanan Data dengan Algoritma Elgamal

dan Kompresi Data

Material Program

Enkripsi & Dekripsi Kompresi &

El Gamal, Primality Test,

Miller - Rabin Huffman

Gangguan keamanan

data seperti hacking semakin sering terjadi. Diperlukan pengamanan File Teks


(31)

3.1.2. Analisis Kebutuhan

Analisis kebutuhan terbagi dua bagian, yaitu kebutuhan fungsional dan kebutuhan nonfungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang disediakan suatu sistem. Sedangkan kebutuhan nonfungsional mendeskripsikan fitur, karakteristik dan batasan lainnya.

3.1.2.1. Kebutuhan Fungsional

Kebutuhan fungsional adalah fungsi-fungsi yang harus dipenuhi pada aplikasi yang dirancang. Kebutuhan fungsional yang harus dipenuhi aplikasi yang dirancang adalah sebagai berikut:

1. Sistem harus mampu membaca String yang berada dalam file teks txt dan doc.

2. Sistem harus mampu melakukan enkripsi dengan menggunakan El Gamal setiap karakter yang berada dalam String yang telah dibaca sehingga menghasilkan ciphertext, serta sistem harus mampu melakukan dekripsi ciphertext menjadi String yang sama dengan

String sebelum dienkripsi.

3. Sistem harus mampu melakukan enkripsi dengan menggunakan algoritma Elgamal setiap karakter yang berada dalam String yang telah dibaca sehingga menghasilkan ciphertext, serta sistem harus mampu melakukan dekripsi ciphertext menjadi String yang sama dengan String sebelum dikodekan.

4. Sistem Harus mampu melakukan kompresi dengan menggunakan algoritma Huffman setiap karakter yang berada dalam string yang bebentuk chiperteks sehingga menghasilkan file yang telah dikompresi, serta mampu melakukan dekompresi menjadi

string yang sama dengan string berbentuk chiperteks sebelum dikompresi.

3.1.2.2. Kebutuhan Non fungsional

Kebutuhan fungsional mencakup karakteristik berikut: 1. Performa

Perangkat lunak yang akan dibangun dapat menunjukkan hasil dari fungsi kriptografi yang dilakukan oleh sistem.

2. Efisiensi

Sistem atau perangkat lunak yang akan dibangun harus sesederhana mungkin agar mudah digunakan oleh pengguna, responsif dan menyajikan durasi runningtime.


(32)

18

3. Ekonomi

Sistem atau perangkat lunak yang akan dibangun harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya tambahan dalam penggunaan perangkat keras maupun perangkat lunak.

4. Dokumentasi

Sistem atau perangkat lunak yang akan dibangun dapat menyimpan data hasil proses enkripsi.

5. Manajemen kualitas

Perangkat lunak yang akan dibangun akan memiliki kualitas yang baik yaitu proses enkripsi dan dekripsi kata sandi serta pembangkitan kunci relatif cepat.

6. Kontrol

Perangkat lunak yang dibangun akan menampilkan pesan error untuk setiap input yang tidak sesuai.

3.1.3. Pemodelan Sistem

Pemodelan aplikasi yang dirancang bertujuan untuk menggambarkan semua kondisi dan bagian-bagian yang berperan dalam sistem yang dirancang. Pemodelan aplikasi dilakukan dengan membuat use-case diagram dan activity diagram.

3.1.3.1. Use-Case Diagram

Untuk menganalisa komponen-komponen yang berperan dalam sistem yang dirancang, penulis menggunakan use-case diagram agar proses penganalisaan komponen dapat dilakukan dengan mudah. Use-case diagram sistem pada aplikasi yang dirancang dapat dilihat pada gambar 3.2.


(33)

Gambar 3.2 Use-Case Diagram Pada Sistem

3.1.3.2. Activity Diagram

Activity diagram adalah diagram aktivitas yang mendeskripsikan proses kerja dalam sebuah sistem yang sedang berjalan. Dalam diagram aktivitas ini maka akan dijelaskan proses kerja dari sistem enkripsi, dekripsi, kompresi & dekompresi yang dilakukan oleh pengguna (user) enkripsi, dekripsi, kompresi dan dekompresi pada file teks dan dokumen.


(34)

20

3.1.3.3. Activity Diagram Proses Enkripsi Elgamal

Gambar 3.3 Activity Diagram Proses Enkripsi Elgamal

Berdasarkan gambar 3.3 untuk melakukan enkripsi hal yang pertama dilakukan adalah input file yang akan dienkripsi, kemudian sistem menampilkan isi file yang akan dienkripsi. Setelah itu, input bilangan pembangkit kunci pada tabel bilangan pembangkit kunci, serta kunci Public yang akan digunakan dalam proses enkripsi. Setelah penginputan kunci selesai, hitung nilai y, setelah itu sistem akan menampilkan nilai y dan proses enkripsi dapat dilakukan dan selanjutnya sistem akan menampilkan file ciphertext hasil enkripsi.


(35)

USER

SYSTEM

Gambar 3.4 Activity Diagram Proses Kompresi Huffman

Berdasarkan gambar 3.4 untuk melakukan kompresi hal yang pertama dialakukan adalah input file chiperteks yang akan di kompresi, kemudian sistem akan menampilkan file

chiperteks yang akan dikompresi, setelah itu kompresi file chiperteks tersebut, kemudian sistem akan menampilkan penyimpanan File yang dikompresi *.hmc (Huffman Kompresi), selanjutnya simpan file kompresi *.HMC, setelah itu proses kompresi selesai.

Browse File Chiperteks Menampilkan File Chiperteks

Kompresi


(36)

22

3.1.3.5 Activity Diagram Proses Dekompresi Huffman

USER

SYSTEM

Gambar 3.5 Activity Diagram Proses Dekompresi Huffman

Berdasarkan gambar 3.5 untuk melakukan dekompresi hal yang pertama dilakukan adalah input file hasil kompresi (*.HMC), setelah itu dekompresi file *.HMC dan pilih file *.HMC yang akan didekompresi tersebut, selanjutnya simpan file yang sudah didekompresi, dan proses dekompresi selesai.

Borwse File .hmc Menampilkan File .hmc

Dekompresi

Simpan File Kompresi .elgmc


(37)

3.1.3.6 Activity Diagram Proses Dekripsi Elgamal

Gambar 3.6 Activity Diagram Proses Dekripsi Elgamal

Berdasarkan gambar 3.6 untuk melakukan dekrispi Elgamal, hal yang pertama dilakukan adalah input file chiperteks (hasil dekompresi), setelah itu sistem akan menampilkan isi file

chiperteks, setelah itu input kunci privat pada tabel pembangkit kunci, selanjutnya dekripsi

chiperteks, berikutnya sistem akan menampilkan hasil dekripsi berupa plainteks awal seperti sebelum dilakukan proses enkripsi, dan simpan plainteks, dan proses dekripsi selesai.


(38)

24

3.1.3.7 Sequence Diagram

Gambar 3.7 Sequence Diagram

3.2. Perancangan Sistem

3.2.1. Pembuatan Algoritma Program

Pembuatan algoritma program adalah proses penerjemahan langkah-langkah algoritma Elgamal serta algoritma Hufman, ke dalam sebuah bahasa pemograman. Tahap-tahap yang dilalui dalam pembuatan algoritma program yaitu:

1. Pembuatan alur proses sistem secara umum.

2. Pembuatan alur proses enkripsi dan dekripsi dengan menggunakan algoritma Elgamal dan penerapan algoritma Elgamal ke dalam bahasa pemrograman C#.

3. Pembuatan alur proses kompresi dan dekompresi dengan menggunakan algoritma Huffman dan penerapan algoritma Huffman ke dalam bahasa pemrograman C#. 4. Pembuatan alur proses pengujian bilangan prima menggunakan Rabin-Miller dan

penerapan Rabin-Miller ke dalam bahasa pemrograman C#.


(39)

Alur proses sistem secara umum dibagi menjadi dua yaitu proses enkripsi file teks maupun dokumen menjadi file ciphertext dan proses dekripsi file ciphertext menjadi file teks maupun dokumen dan proses kompresi dan dekompresi. Keseluruhan proses tersebut dapat dilihat pada flowchart gambaran umum sistem pada gambar 3.8.

Gambar 3.8 flowchart Gambaran Umum Sistem

3.2.3. Alur Proses Enkripsi pada Elgamal

Pada proses enkripsi membutuhkan kunci pembangkit kunci atau kunci publik yaitu g, x, p, dimana g, x merupakan kunci private, Untuk melakukan proses enkripsi dengan algoritma Elgamal dibutuhkan kunci-kunci yang digunakan untuk penyadian pesan rahasia.

Berikut ini adalah proses pembangkitan kunci pada algoritma Elgamal:

1. Pilih sembarang p adalah bilangan prima.

2. Pilih dua bilangan acak g dan x, dengan syarat � < dan < . 3. Hitunglah nilai = gkmod p dengan nilai x adalah kunci private.

Setelah melakukan pembangkitan kunci dapat dilakukan proses enkripsi. Proses Enkripsi Elgamal menggunakan kunci publik , � dan . Berikut proses enkripsi algoritma Elgamal:


(40)

26

1. Susunlah plainteks menjadi blok-blok �1,�2,�3,…. Kemudian setiap blok huruf diubah menjadi bilangan ASCII.

2. Pilih Bilangan acak k dengan syarat 0 ≤�≤ − 2, maka 0 ≤�≤ 257 −2 → 0≤�≤ 255.

3. Setiap blok m dienkripsikan dengan rumus:

a = gk mod p b= ( k�) � �

untuk lebih jelasnya dapat dilihat pada gambar 3.9 di bawah ini.


(41)

3.2.4. Alur Proses Dekripsi pada Elgamal

Pada proses dekripsi membutuhkan kunci pembangkit kunci atau kunci privat yaitu g, x, dimana g, x merupakan kunci private, berikut ini adalah proses dekripsi pada algoritma Elgamal.

3.2.4.1. Analisis Proses Dekripsi dengan Algoritma Elgamal

Proses dekripsi Elgamal menggunakan kunci publik dan kunci private . Berikut proses dekripsi algoritma Elgamal:

1. Hitunglah (ax)– 1 = Cp – 1 – x mod p.

2. Gunakan Kunci private dan kunci publik p untuk mendekripsi chipertext a dan b

menjadi plaintext m dengan rumus: m = b 1 (ax)– 1 mod p untuk alur kerjanya dapat dilihat pada gambar 3.10 di bawah ini.


(42)

28

Proses enkripsi dan dekripsi dengan menggunakan Elgamal secara umum dapat dijelaskan dengan diagram blok seperti pada gambar 3.11

Gambar 3.11 Diagram Blok Proses Elgamal

3.2.5. Alur Proses Kompresi Pada Huffman

Pengkodean Huffman adalah teknik untuk mengompresi data. Algoritma greedy Huffman melihat terjadinya masing-masing karakter dan sebagai string biner secara optimal Huffman

coding adalah bentuk coding statistik yang mencoba untuk mengurangi jumlah bit yang diperlukan untuk merepresentasikan string dari simbol [4]. Berikut ini alur kerja kompresi algoritma Huffman.

Gambar 3.12 Flowchart Kompresi Huffman

File txt || doc File Ciphertext

Proses enkripsi Dengan Elgamal

Proses dekripsi Dari Elgamal


(43)

3.2.5.1. Proses Pembentukan Pohon Huffman

Kode Huffman pada dasarnya merupakan kode prefiks (prefix code). Kode prefiks adalah himpunan yang berisi sekumpulan kode biner, dimana pada kode prefik ini tidak ada kode biner yang menjadi awal bagi kode biner yang lain. Kode prefiks biasanya direpresentasikan sebagai pohon biner yang diberikan nilai atau label. Untuk cabang kiri pada pohon biner diberi label 0, sedangkan pada cabang kanan pada pohon biner diberi label 1. Rangkaian bit yang terbentuk pada setiap lintasan dari akar ke daun merupakan kode prefiks untuk karakter yang berpadanan. Pohon biner ini biasa disebut pohon Huffman.

Sebagai contoh, dalam kode ASCII string 7 huruf “RACHMAT” membutuhkan representasi 7 × 8 bit = 56 bit (7 byte), dengan rincian sebagai berikut:

R = 82 = 01010010 A = 65 = 01000001 C = 67 = 01000011 H = 72 = 01001000 M = 77 = 01001101 A = 65 = 01000001 T = 84 = 01010100

Berikut tabel yang menjelaskan jumlah bit huruf “RACHMAT” sebelum dilakukan proses kompresi:

Tabel 3.1 Jumlah Frequensi dan Bit Sebelum Proses Kompresi Untuk Karakter

“RACHMAT”.

Char Freq Bit Freq*Bit

R 1 8 8

A 2 8 16

C 1 8 8

H 1 8 8

M 1 8 8

T 1 8 8


(44)

30

Gambar 3.13 Pohon Huffman untuk Karakter “RACHMAT”.

3.2.5.2. Proses Encoding

Encoding adalah cara menyusun string biner dari teks yang ada. Proses encoding untuk satu karakter dimulai dengan membuat pohon Huffman terlebih dahulu. Setelah itu, kode untuk satu karakter dibuat dengan menyusun nama string biner yang dibaca dari akar sampai ke daun pohon Huffman.

Dari pohon Huffman pada gambar 3.13 diatas dilakukan encoding seperti table 3.2 dibawah ini, berikut tabel yang menjelaskan jumlah bit huruf “RACHMAT” sebelum dilakukan proses kompresi:

Tabel 3.2 Jumlah Frequensi dan Bit Setelah Proses Kompresi Untuk Karakter

“RACHMAT”

Char Huffman Kode Bit Freq Freq*Bit

R 111 3 1 3

A 01 2 2 4

C 100 3 1 4

H 101 3 1 4

M 110 3 1 4

T 00 2 1 2


(45)

3.2.5.3 Proses Decoding

Decoding merupakan kebalikan dari encoding. Decoding berarti menyusun kembali data dari

string biner menjadi sebuah karakter kembali. Decoding dapat dilakukan dengan dua cara, yang pertama dengan menggunakan pohon Huffman dan yang kedua dengan menggunakan tabel kode Huffman, berikut gambar proses decoding pohon Huffman:

Gambar 3.14 Proses Decoding dengan Menggunakan Pohon Huffman

3.2.6. Alur Proses Dekompresi Pada Huffman

Setelah file dikompresi maka untuk mengembalikannya seperti semula diperlukan proses dekompresi, berikut flowchart dekompresi pada algoritma Huffman pada gambar 3.15.


(46)

32

Gambar 3.15 Flowchart Dekompresi Huffman

3.3. Perancangan Antar Muka (Interface) 3.3.1. Rancangan Halaman Utama

Halaman menu utama adalah halaman yang muncul pertama kali saat sistem dijalankan. Halaman ini memiliki tiga buah menu bar, yaitu Kriptograpi, Kompresi, dan Tentang. Pada menu Kriptografi terdapat dua submenu yaitu submenu enkripsi dan dekripsi, pada menu Kompresi, terdapat submenu kompresi dan dekompresi dan pada menu Tentang tidak terdapat submenu. Tampilan rancangan menu dapat dilihat pada gambar 3.16.


(47)

| Kriptorafi(1) | Kompresi(2) | Tentang (3) | Enkripsi

Dekripsi

PERANCANGAN PERANGKAT LUNAK PENGAMANAN FILE TEXT(4)

MENGGUNAKAN ALGORITMA EL GAMAL DAN KOMPRESI FILE TEXT MENGGUNAKAN ALGORITMA HUFFMAN

PADA KEAMANAN FILE TXT DAN DOC

(5)

PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER(6)

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

2015 Kompresi

Dekompresi

Gambar 3.16 Rancangan Antarmuka Halaman Menu Utama

Keterangan:

1. Menu Kriftografi yang berisi sub menu Enkripsi dan Dekripsi 2. Menu Kompresi yang berisi sub menu Kompresi dan Dekompresi 3. Menu Tentang berfungsi menampilkan informasi tentang skripsi 4. Label yang berisi judul skripsi

5. PictureBox yang berisi logo Universitas Sumatera Utara

6. Label yang berisi Fakultas Ilmu Komputer dan Teknologi Informasi

3.3.2. Rancangan Halaman Enkripsi Elgamal

Rancangan halaman menu Enkripsi Elgamal berfungsi untuk melakukan proses enkripsi pada file teks dan dokumen menggunakan algoritma Elgamal. Tampilan halaman menu Enkripsi dapat dilihat pada gambar 3.17.


(48)

34

Gambar 3.17 Rancangan Halaman Enkripsi Elgamal

Keterangan:

1. TextBox berfungsi untuk menampilkan file yang akan di enkripsi

2. CommandButton yang berfungsi untuk memasukkan lokasi dan nama file 3. TextBox yang berfungsi menampilkan isi file

4. TextBox yang berfungsi menampilkan hasil enkripsi (Chiperteks) 5. Label yang berfungsi menampilkan waktu eksekusi proses Enkripsi 6. Label yang berfungsi menampilkan panjang karakter hasil enkripsi 7. TextBox untuk Pembangkit Kunci

8. TextBox untuk menampilkan g 9. TextBox untuk menampilkan X 10.TextBox untuk menampilkan P

11.CommandButton yang berfungsi untuk menghitung nilai Y 12.TextBox untuk menampilkan P

13.CommandButton yang berfungsi untuk melakukan proses Enkripsi 14.CommandButton yang berfungsi untuk menyimpan file hasil enkripsi

15.CommandButton yang berfungsi untuk mengembalikan sistem seperti semula

Input Pembangkit Kunci (7)

File Teks : g

Isi File : X

P Y Hasil :

Enkripsi ELGAMAL X

Text Box(1)

Text Box(3)

Browse(2)

Text Box(4) Enkripsi

(13

Simpan(14) Reset(15) Text Box(12) Text Box(8)

Text Box(9)

Text Box(10)


(49)

3.3.3. Rancangan Halaman Kompresi Huffman

Rancangan halaman menu Kompresi Huffman berfungsi untuk melakukan proses Kompresi pada file teks dan dokumen menggunakan algoritma Huffman. Tampilan halaman menu Kompresi dapat dilihat pada gambar 3.18.

Gambar 3.18 Rancangan Halaman Kompresi Huffman

Keterangan:

1. CommandBox yang berfungsi untuk membrowse file yang akan di kompresi 2. CommandBox yang berfungsi untuk mengkompresi file yang sudah di enkripsi 3. Label yang berfungsi menampilkan waktu eksekusi proses Kompresi

3.3.4. Rancangan Halaman Dekompresi Huffman

Rancangan halaman menu Kompresi Huffman berfungsi untuk melakukan proses Dekompresi pada file teks dan dokumen menggunakan algoritma Huffman. Tampilan halaman menu Dekompresi dapat dilihat pada gambar 3.19.

Gambar 3.19 Rancangan Halaman Dekompresi Huffman

Waktu Eksekusi : (3)

Kompresi Huffman X

Browse (1) Kompresi(2)

Waktu Eksekusi : (3)

Kompresi Huffman X


(50)

36

Keterangan:

1. CommandBox yang berfungsi untuk membrowse file yang akan di dekompresi 2. CommandBox yang berfungsi untuk mengkompresi file yang sudah di enkripsi 3. Label yang berfungsi menampilkan waktu eksekusi proses Dekompresi

3.3.5. Rancangan Halaman Dekripsi Elgamal

Rancangan halaman menu Enkripsi Elgamal berfungsi untuk melakukan proses dekripsi pada file teks dan dokumen menggunakan algoritma Elgamal. Tampilan halaman menu Enkripsi dapat dilihat pada gambar 3.20.

Gambar 3.20 Rancangan Halaman Dekripsi Elgamal

Input Pembangkit Kunci (7)

File Teks: X X

Isi File : P

Waktu Eksekusi : (5) Panjang Karakter : (6)

Dekripsi ELGAMAL X

Text Box(1)

Text Box(3)

Browse(2)

Text Box(4)

Dekripsi(10 Simpan(11)

Reset(12) Text Box(8)


(51)

Keterangan:

1. TextBox berfungsi untuk menampilkan file yang akan di Dekripsi

2. CommandButton yang berfungsi untuk memasukkan lokasi dan nama file 3. TextBox yang berfungsi menampilkan isi file

4. TextBox yang berfungsi menampilkan hasil Dekripsi (Plainteks) 5. Label yang berfungsi menampilkan waktu eksekusi proses Enkripsi 6. Label yang berfungsi menampilkan panjang karakter hasil enkripsi 7. TextBox untuk Pembangkit Kunci

8. TextBox untuk menampilkan X 9. TextBox untuk menampilkan P

10.CommandButton yang berfungsi untuk melakukan proses Dekripsi 11.CommandButton yang berfungsi untuk menyimpan file hasil enkripsi


(52)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi

Dalam tugas akhir ini, program dibangun menggunakan bahasa pemrograman C# dengan menggunakan editor Microsoft Visual Studio 2010. Aplikasi ini berjalan pada notebook

dengan sistem operasi Windows 7. Proses implementasi sistem yang terjadi di dalam aplikasi yang dirancang dibagi menjadi dua, yaitu:

1. Implementasi program enkripsi dan dekripsi file text maupun dokumen menggunakan algoritma Elgamal.

2. Implementasi program kompresi dan dekompresi file menggunakan algoritma Huffman. Hal tersebut betujuan untuk mengetahui bagaimana kinerja aplikasi secara garis besar sebelum aplikasi dijalankan.

4.1.1. Implementasi Proses Enkripsi Menggunakan Algoritma Elgamal

Sebagai contoh untuk melihat hasil kerja program, dilakukan percobaan dengan menggunakan file teks dengan ekstensi *.txt dengan panjang karakter 14 karakter seperti pada gambar 4.1.


(53)

1. Plaintext :

RACHMAT →�1 = R → ubah menjadi bilangan ASCII yaitu 82

�2 = A → ubah menjadi bilangan ASCII yaitu 65

�3 = C → ubah menjadi bilangan ASCII yaitu 67

�4 = H → ubah menjadi bilangan ASCII yaitu 72

�5 = M → ubah menjadi bilangan ASCII yaitu 77

�6 = A → ubah menjadi bilangan ASCII yaitu 65

�7 = T → ubah menjadi bilangan ASCII yaitu 84

2. Pilih Bilangan acak k dengan syarat 0 ≤ �≤ − 2, maka 0 ≤ �≤ 257 − 2 → 0 ≤ �≤ 255. Contoh: �=7.

3. Setiap blok m dienkripsikan dengan rumus: a = gkmod p

b = ( k�) � � Contoh: a = gkmod p

a = 37� � 257 a = 2187 � � 257

a = 2187 � � 257 a = 131

b = ( k�) � �

b 1 = ( k�1) � � = (817 82) � � 257

= 1875896981306802 � � 257

= 87

b 2 = ( k�2) � � = (817 65) � � 257

= 1,486,991,509,572,465 � � 257

= 210

b 3 = ( k�3) � � = (817 67) � � 257

= 1,532,745,094,482,387 � � 257 = 256

b 4 = ( k�4) � � = (817 72) � � 257

= 1,647,129,056,757,192 � � 257 = 114

b 5 = ( k�5) � � = (817 77) � � 257


(54)

40

= 229

b 6 = ( k�6) � � = (817 65) � � 257

= 1,486,991,509,572,465 � � 257 = 210

b 7 = ( k�7) � � = (817 84) � � 257

= 1,921,650,566,216,724 � � 257 = 133

File Enkripsi Elgamal yang dihasilkan dari file teks input setelah implementasi kode program adalah file dengan ekstensi *.elgmc dengan ukuran panjang karakter 48 karakter.

4.1.2. Implementasi Proses Kompresi Menggunakan Algoritma Huffman

Sebagai contoh untuk melihat hasil kerja program, dilakukan percobaan dengan menggunakan file dengan ekstensi *.elgmc seperti pada gambar 4.2. File Elgamal seperti pada gambar 4.1 apabila di kompresi akan menjadi file dengan ekstensi *.hmc (Huffman Compressi) seperti pada gambar 4.3.

Gambar 4.2 Proses Kompresi Kompresi


(55)

dalam kode ASCII string 7 huruf “RACHMAT” membutuhkan representasi 7 × 8 bit = 56 bit

(7 byte), dengan rincian sebagai berikut: R = 82 = 01010010

A = 65 = 01000001 C = 67 = 01000011 H = 72 = 01001000 M = 77 = 01001101 A = 65 = 01000001 T = 84 = 01010100

Berikut tabel yang menjelaskan jumlah bit huruf “RACHMAT” sebelum dilakukan proses kompresi:

Tabel 4.1 Jumlah Frequensi dan Bit Sebelum Proses Kompresi Untuk Karakter

“RACHMAT”

Char Freq Bit Freq*Bit

R 1 8 8

A 2 8 16

C 1 8 8

H 1 8 8

M 1 8 8

T 1 8 8


(56)

42

Gambar 4.4 Pohon Huffman untuk Karakter “RACHMAT”

Berikut tabel yang menjelaskan jumlah bit huruf “RACHMAT” sebelum dilakukan proses kompresi:

Tabel 4.2 Jumlah Frequensi dan Bit Setelah Proses Kompresi Untuk Karakter

“RACHMAT”

Char Huffman Kode Bit Freq Freq*Bit

R 111 3 1 3

A 01 2 2 4

C 100 3 1 4

H 101 3 1 4

M 110 3 1 4

T 00 2 1 2


(57)

Hasil Kompresi menjadi file .hmc, file .hmc merupakan file kompresi huffman (Huffman Compressi). dengan proses kompresi dimana hasil kompresi setengah lebih kecil dari file hasil enkripsi.

4.1.3. Implementasi Proses Dekompresi Menggunakan Algoritma Huffman

Sebagai contoh untuk melihat hasil kerja program dalam melakukan proses dekompresi, dilakukan percobaan dengan menggunakan file dengan *.hmc. File *.hmc apabila di dekompresi akan kembali menjadi file dengan ekstensi *.elgmc seperti pada gambar 4.6.

Gambar 4.5 Proses Dekompresi


(58)

44

4.1.4. Implementasi Proses Dekripsi Menggunakan Algoritma Elgamal

Sebagai contoh untuk melihat hasil kerja program dalam proses dekripsi, dilakukan percobaan dengan menggunakan file dengan ekstensi *.elgmc. File *.elgmc, apabila di dekripsi akan kembali menjadi file dengan ekstensi *.docx seperti pada gambar 4.7.

Gambar 4.7 Proses Dekripsi

File Dekripsi Elgamal yang dihasilkan dari file teks input setelah implementasi kode program adalah file dengan ekstensi *.docx dengan ukuran panjang karakter 903.

: ax)– 1 = ap – 1 – x mod p = 131257 – 1 – 4 mod p

= 131 252 mod 257

= 190

b. Gunakan Kunci private dan kunci publik p untuk mendekripsi chipertext a dan b

menjadi plaintext m dengan rumus: m = b 1 (ax)– 1 mod p �1 = b 1(ax)– 1 mod p

�1 =87(190 ) mod 257 �1 = 16530 mod 257 �1 = 82 = R


(59)

�2 = b 2(ax)– 1 mod p �2 = 210(190 ) mod 257 �2 = 39900 mod 257 �2 = 65 = A

�3 = b 3(ax)– 1 mod p �3 = 256 (190 ) mod 257 �3 = 48640 mod 257 �3 = 67 = C

�4 = b 4(ax)– 1 mod p �4 = 114 (190 ) mod 257 �4 = 21660 mod 257 �4 = 72 = H

�5= b5(ax)– 1 mod p �5= 229(190 ) mod 257 �5= 43510 mod 257 �5= 77 = M

�6= b6(ax)– 1 mod p �6= 210(190 ) mod 257 �6= 39900 mod 257 �6= 65 = A

�7= b7(ax)– 1 mod p �7= 133(190 ) mod 257 �7= 25270 mod 257


(60)

46

Gambar 4.8 File Teks Hasil Dekripsi dengan Ekstensi .txt

Untuk file input baik teks maupun dokumen yang dikompresi dengan Elgmal, hasil dekripsi tidak akan sama persis dengan hasil file input karena komponen lain seperti spasi, gambar, tabel dan simbol-simbol khusus lainnya tidak akan ditampilkan.

4.1.5. Tampilan Form Tentang

Halaman Tentang berfungsi sebagai halaman yang menampilkan keterangan tentang profil singkat pembuat aplikasi. Halaman ini dapat diakses pada tab menu Tentang. Tampilan halaman Tentang dapat dilihat pada gambar 4.9.


(61)

4.2. Pengujian

Pengujian sistem merupakan lanjutan dari implementasi sistem yang berfungsi untuk membuktikan bahwa sistem telah berjalan dengan lancar sesuai hasil dari analisis dan perancangan sistem. Pengujian dilakukan dengan kriteria sebagai berikut:

1. Plaintext berupa file teks(*.txt) dan dokumen (*.doc).

2. Pembangkit kunci atau kunci publik (g, X dan P) dalam proses enkripsi 3. Pembangkit kunci kunci private (X dan P) dalam proses dekripsi

4. Hasil dekripsi pada Elgamal akan meniadakan jenis huruf, atau karakter symbol lainnya dikarenakan karakter tersebut tidak dijelaskan dalam algoritma.

Saat aplikasi pertama kali dijalankan, akan muncul tampilan halaman menu utama yang berisi judul skripsi, gambar latar serta tampilan menu. Pada jendela ini terdapat Menu utama yang terdiri dari menu Kriptografi, Kompresi dan. Tampilan jendela utama dapat dilihat pada gambar 4.10.


(62)

48

Halaman menu utama terdiri dari 3 (tiga) menubar, yaitu menu Kriptografi, Kompresi dan Tentang. Pada menu Kriptografi, terdapat 2 (dua) submenubar, yaitu submenubar

Enkripsi yang menghubungkan user (pengguna) dengan menu Enkripsi dan submenubar

Dekripsi yang akan menghubungkan user (pengguna) dengan menu Dekripsi. Pada Menu Kompresi Terdapat 2 (dua) submenubar, yaitu submenubar Kompresi yang menghubungkan pengguna dengan menu kompresi,submenubar Dekompresi yang akan menghubungkan pengguna dengan menu dekompresi.

4.2.1. Pengujian Enkripsi Elgamal

Untuk melakukan enkripsi file melalui aplikasi yang dirancang dapat dilakukan dengan cara memulai aplikasi kemudian ketika tampilan aplikasi telah muncul seperti gambar 4.8, lakukan langkah-langkah sebagai berikut:

1. Menekan tombol Browse maka akan muncul pop-up window Open yang akan menampilkan jendela penyimpanan file. Pop-up Window Open dapat dilihat pada gambar 4.11.


(63)

2. Kemudian akan muncul isi dari file teks atau dokumen yang telah dipilih. Setelah itu

user menginputkan pembangkit kunci atau kunci public yang terdiri dari g, X dan P . Tampilan pembangkit kunci dapat dilihat pada gambar 4.12.

Gambar 4.12 Tampilan Pembangkit Kunci dan Input file Teks

3. Proses enkripsi dapat dilakukan dengan cara mengeksekusi tombol Enkripsi. Setelah proses enkripsi selesai dilakukan maka akan muncul file ciphertext hasil enkripsi dan menampilkan informasi-informasi tentang enkripsi seperti waktu eksekusi proses enkripsi dan panjang karakter file ciphertext hasil enkripsi. Tampilan proses enkripsi file menggunakan Elgamal dapat dilihat pada gambar 4.13.


(64)

50

Gambar 4.13 File Teks Setelah Proses Enkripsi

4. Untuk melakukan proses penyimpanan file dapat dilakukan dengan cara mengeksekusi tombol Simpan. Kemudian ketikkan nama file yang akan disimpan. Jika proses penyimpanan berhasil, maka akan muncul tampilan seperti pada gambar 4.14.


(65)

4.2.2 Pengujian Kompresi Huffman

Untuk melakukan Kompresi pada file hasil enkripsi dapat dilakukan dengan cara memulai aplikasi kemudian ketika tampilan aplikasi telah muncul seperti gambar 4.8, lakukan langkah-langkah sebagai berikut:

1. Menekan tombol Kompresi maka akan muncul pop-up window Open yang akan menampilkan jendela penyimpanan file. Pop-up Window Open dapat dilihat pada gambar 4.15.

Gambar 4.15 Pop-up Window Open

2. Kemudian akan muncul pop-up window untuk menyimpan file hasil kompresi, file hasil kompresi akan menjadi 2 (bagian) yaitu file *.hmt dan *.hmc, untuk lebih jelasnya dapat dilihat pada gambar 4.16 dan gambar 4.17.


(66)

52

Gambar. 4.16 Proses Penyimpanan Hasil Kompresi *.hmt


(67)

4.2.3 Pengujian Dekompresi Huffman

Untuk melakukan Dekompresi pada file hasil kompresi dapat dilakukan dengan cara memulai aplikasi kemudian ketika tampilan aplikasi telah muncul seperti gambar 4.8, lakukan langkah-langkah sebagai berikut:

1. Menekan tombol Kompresi maka akan muncul pop-up window Open yang akan menampilkan jendela penyimpanan file. Pop-up Window Open dapat dilihat pada gambar 4.18.

Gambar 4.18 Pop-up Window Open

2. Kemudian akan muncul pop-up window untuk menampilkan file hasil kompresi, file hasil kompresi yang terdiri 2 (bagian) yaitu file *.hmc dan *.hmt untuk lebih jelasnya dapat dilihat pada gambar 4.19 dan gambar 4.20.


(68)

54

Gambar. 4.19 Proses Dekompresi *.hmc

Gambar. 4.20 Proses Dekompresi *.hmt

3. Kemudian akan muncul pop-up window untuk menyimpan file hasil dekompresi, file hasil kompresi akan menjadi file *.elgmc, untuk lebih jelasnya dapat dilihat pada gambar 4.21.


(69)

Gambar 4.21 Proses Penyimpanan File Hasil Dekompresi .elgmc

4.2.4 Pengujian Dekripsi Elgamal

Untuk melakukan dekripsi file melalui aplikasi yang dirancang dapat dilakukan dengan cara memulai aplikasi kemudian ketika tampilan aplikasi telah muncul seperti gambar 4.8, lakukan langkah-langkah sebagai berikut:

1. Menekan tombol Browse maka akan muncul pop-up window Open yang akan menampilkan jendela penyimpanan file. Pop-up Window Open dapat dilihat pada gambar 4.22.


(70)

56

2. Kemudian akan muncul isi dari file teks atau dokumen yang telah dipilih. Setelah itu

user menginputkan pembangkit kunci atau kunci public yang terdiri dari X dan P. Tampilan pembangkit kunci dapat dilihat pada gambar 4.23

Gambar 4.23 Tampilan Kunci Private dan Input file Teks

3. Proses enkripsi dapat dilakukan dengan cara mengeksekusi tombol Enkripsi. Setelah proses enkripsi selesai dilakukan maka akan muncul file plainteks hasil dekripsi dan menampilkan informasi-informasi tentang dekripsi seperti waktu eksekusi proses enkripsi dan panjang karakter file plainteks hasil enkripsi. Tampilan proses dekripsi file menggunakan Elgamal dapat dilihat pada gambar 4.24.


(71)

4. Untuk melakukan proses penyimpanan file dapat dilakukan dengan cara mengeksekusi tombol Simpan. Kemudian ketikkan nama file yang akan disimpan. Jika proses penyimpanan berhasil, maka akan muncul tampilan seperti pada gambar 4.25.

Gambar 4.25 Proses Penyimpanan File Hasil Dekripsi Elgamal

Dari Hasil uji coba pada aplikasi perancangan perangkat lunak pengamanan file teks dan kompresi file teks, dimana file hasil enkripsi atau chiperteks jauh lebih panjang karakternya dibandingakn sebelum dilakukan proses enkripsi. Fle hasil enkripsi setelah dilakukan proses kompresi menjadi lebih sedikit karakternya dimana file hasil kompresi menjadi lebih kurang setengah jumlah panjang karakter, sebelum dilakukan proses kompresi dan untuk lebih jelasnya dapat dilihat pada tabel 4.3.

Tabel 4.3 Perbandingan File Teks Setelah dilakukan Proses Enkripsi dan Kompresi

Proses/Input

File Asli / File Text

Setelah Enkripsi Elgamal

Setelah Kompresi Huffman File.hmt File.hmc

PP(karakter)

903 7224 518 2697

962 7696 533 2857

904 5424 518 2111

194 1164 514 442


(1)

public partial class frmKompresi : Form {

public frmKompresi() {

InitializeComponent(); }

private void button1_Click(object sender, EventArgs e) {

this.OpenFD.FileName = "";

this.OpenFD.Filter = "File Enkripsi El Gamal|*.elgmc"; this.OpenFD.Title = "Buka File Enkripsi El Gamal"; bool flag = this.OpenFD.ShowDialog() == DialogResult.OK; if (flag)

{

textBox1.Text = this.OpenFD.FileName; }

}

private void button2_Click(object sender, EventArgs e) {

if (textBox1.Text.Length > 0) {

string sumber = "";

string filename = textBox1.Text;

string newfilename = filename.Replace(".elgmc", ".hmc");

if (File.Exists(Path.GetTempPath().ToString() + Path.GetFileName(filename).ToString()))

{

File.Delete(Path.GetTempPath().ToString() + Path.GetFileName(filename).ToString());

}

File.Copy(this.OpenFD.FileName, Path.GetTempPath().ToString() + Path.GetFileName(filename).ToString());

StreamReader streamReader = new StreamReader(filename); sumber = streamReader.ReadToEnd();

streamReader.Close();

Stopwatch sw = Stopwatch.StartNew();


(2)

huffmanTree.Build(sumber);

BitArray bit_array = huffmanTree.Encode(sumber);

byte[] bytes = new byte[bit_array.Length / 8 + (bit_array.Length % 8 == 0 ? 0 : 1)];

bit_array.CopyTo(bytes, 0);

File.WriteAllBytes(newfilename, bytes);

sw.Stop();

lblWaktu.Text = sw.Elapsed.Milliseconds.ToString() + " ms"; MessageBox.Show("Kompresi selesai!\n" + newfilename); }

else {

MessageBox.Show("Pilih file terlebih dahulu!"); }

}

} }

Kode Program frmKompresi.Designer.cs

namespace EnkDekGUI {

partial class frmKompresi {

/// <summary>

/// Required designer variable. /// </summary>

private System.ComponentModel.IContainer components = null;

/// <summary>

/// Clean up any resources being used. /// </summary>

/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>

protected override void Dispose(bool disposing) {

if (disposing && (components != null)) {


(3)

components.Dispose(); }

base.Dispose(disposing); }

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary>

private void InitializeComponent() {

this.button1 = new System.Windows.Forms.Button();

this.OpenFD = new System.Windows.Forms.OpenFileDialog(); this.lblWaktu = new System.Windows.Forms.Label();

this.label18 = new System.Windows.Forms.Label(); this.textBox1 = new System.Windows.Forms.TextBox(); this.button2 = new System.Windows.Forms.Button(); this.SuspendLayout();

//

// button1 //

this.button1.Location = new System.Drawing.Point(236, 12); this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(111, 35); this.button1.TabIndex = 0;

this.button1.Text = "Browse";

this.button1.UseVisualStyleBackColor = true;

this.button1.Click += new System.EventHandler(this.button1_Click); //

// OpenFD //

this.OpenFD.FileName = "openFileDialog1"; //

// lblWaktu //

this.lblWaktu.AutoSize = true;

this.lblWaktu.Location = new System.Drawing.Point(101, 47); this.lblWaktu.Name = "lblWaktu";

this.lblWaktu.Size = new System.Drawing.Size(29, 13); this.lblWaktu.TabIndex = 173;


(4)

this.lblWaktu.Text = "0 ms"; //

// label18 //

this.label18.AutoSize = true;

this.label18.Location = new System.Drawing.Point(12, 47); this.label18.Name = "label18";

this.label18.Size = new System.Drawing.Size(91, 13); this.label18.TabIndex = 172;

this.label18.Text = "Waktu Eksekusi :"; //

// textBox1 //

this.textBox1.BackColor = System.Drawing.SystemColors.ControlLightLight; this.textBox1.Location = new System.Drawing.Point(12, 20);

this.textBox1.Name = "textBox1"; this.textBox1.ReadOnly = true;

this.textBox1.Size = new System.Drawing.Size(218, 20); this.textBox1.TabIndex = 174;

//

// button2 //

this.button2.Location = new System.Drawing.Point(353, 12); this.button2.Name = "button2";

this.button2.Size = new System.Drawing.Size(111, 35); this.button2.TabIndex = 175;

this.button2.Text = "Kompresi";

this.button2.UseVisualStyleBackColor = true;

this.button2.Click += new System.EventHandler(this.button2_Click); //

// frmKompresi //

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(487, 78);

this.Controls.Add(this.button2); this.Controls.Add(this.textBox1); this.Controls.Add(this.lblWaktu); this.Controls.Add(this.label18); this.Controls.Add(this.button1);

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false;


(5)

this.Name = "frmKompresi"; this.ShowInTaskbar = false;

this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Kompresi Menggunakan Huffman";

this.ResumeLayout(false); this.PerformLayout();

}

#endregion

private System.Windows.Forms.Button button1;

private System.Windows.Forms.OpenFileDialog OpenFD; private System.Windows.Forms.Label lblWaktu;

private System.Windows.Forms.Label label18; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Button button2; }


(6)

CURRICULUM VITAE

Nama

: Rachmat Saleh Hasibuan

Tempat / Tanggal Lahir

: Padangsidimpuan / 18 November 1990

Alamat

: Jl. Sei Musi No. 87 A, Medan

Agama

: Islam

Jenis Kelamin

: Laki-Laki

Alamat Email

: Rzhasibuand@gmail.com

No. Hp

: 085275316020

PENDIDIKAN FORMAL

2011-2015

S1 Ekstensi Ilmu Komputer Fasilkom-TI USU, Medan.

2008-2011

D3 Teknik Informatika USU, Medan.

2005-2008

SMA Negeri 3 Padangsidimpuan

2002-2005

SMP Negeri 1 Padangsidimpuan

1996-2002

SD Negeri 14 Padangsidimpuan

SEMINAR, KURSUS

2008

Peserta Seminar Teknologi Informasi “Welcome The Future

With Information Technology” Universitas Sumatera Utara

2010

Peserta Seminar Teknologi Informasi “Works

hop Networking

Windows Server Work Station” Universitas Sumatera Utara

2010

Peserta Seminar Nasional “Matematika dan Terapan 2010”

Universitas Sumatera Utara

2010

Peserta Seminar Internasional “Mathematics and Its

Applications 2010” Universitas Sumatera Ut

ara

KEAHLIAN

Bahasa

Indonesia, Inggris

Bahasa Pemrograman

C++, C#.Net, PHP, MySQL.

PENGALAMAN ORGANISASI

2008

Ketua Bidang Penlitian dan Pengembangan Ikatan Mahasiswa

Kota Padangsidimpuan

2009

Anggota Biasa HMI