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
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,
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
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
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.
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..
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
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
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
x
DAFTAR GAMBAR
Halaman
2.1
Alur Teknik Lossless Kompresi-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
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
xii
DAFTAR LAMPIRAN
Halaman
A. Listing Program
A-1
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.
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..
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.
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
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
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 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)
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 = g
xmod 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
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 (n
mod 2 ≠ 0).
Langkah 2:
Hitung
n-1 =
u2
t, 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
≤
a
≤
n-1 sebanyak
s kali. Jika pengujian sudah
sampai s kali, maka lanjutkan ke Langkah 6.
Langkah 4:
Hitung
≡
a
u(mod n).
Langkah 5:
Hitung
sebanyak
t
kali dimana 1≤
i
≤
t. 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 = u2
t11
–
1 = u2¹
10 = u2
2u = 10
u = 5
Langkah 3: misalkan a = 4
Langkah 4:
≡
a
u(mod n)
mod n = a
umod n = 4
5mod n = 1024
= 1024 mod 11
= 1
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
m
1,
m
2, …, (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 = g
kmod p
b = y
km 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 (a
x)
– 1= a
p – 1 – xmod p
2.
Hitung plainteks m dengan persamaan [Munir, Rinaldi. 2006]:
m = b/a
xmod p = b (a
x)
– 1mod 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 = g
xmod p = 2
1751mod 2357 = 1185
Hasil: Kunci public: (y = 1185, g = 2, p = 2357)
Kunci privat: (x = 1751, p = 2357).
Bob menghitung
a = g
kmod p = 2
1520mod 2357 = 1430
b = y
km mod p= 1185
1520(2035) mod 2357 = 697
Jadi, cipherteks yang dihasilkan adalah (1430, 697). Bob mengirim cipherteks ini ke Alice,
oleh alice 1/a
x= (a
x)
– 1= a
p – 1 – xmod p = 1430
605mod 2357 = 872
m = b/a
x% 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].
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
-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 kesalah
an 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
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)
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 Huffm
an 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.
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 un
tuk 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.
Gambar 2.3 Proses Decoding dengan Menggunakan Pohon Huffman
Setelah kita telusuri dari akar, maka kita akan menemukan bahwa string yang mempunyai
ko
de 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
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
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
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
Gambar 3.2 Use-Case Diagram Pada Sistem
3.1.3.2. Activity Diagram
20
3.1.3.3. Activity Diagram Proses Enkripsi Elgamal
[image:34.595.118.478.123.535.2]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.
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
22
3.1.3.5 Activity Diagram Proses Dekompresi Huffman
USER
SYSTEM
[image:36.595.97.500.111.515.2]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
3.1.3.6 Activity Diagram Proses Dekripsi Elgamal
Gambar 3.6 Activity Diagram Proses Dekripsi Elgamal
24
[image:38.595.103.460.122.396.2]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
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
= g
kmod p
dengan nilai
x
adalah kunci
private
.
26
1. Susunlah plainteks menjadi blok-blok
�
1,
�
2,
�
3,…. Ke
mudian 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 = g
kmod p
b = (
k�
)
� �
[image:40.595.85.456.213.663.2]
untuk lebih jelasnya dapat dilihat pada gambar 3.9 di bawah ini.
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
(a
x)
– 1= C
p – 1 – xmod p.
2.
Gunakan Kunci
private
dan kunci publik
p untuk mendekripsi
chipertext a dan
b
menjadi plaintext m dengan rumus: m = b 1 (a
x)
– 1mod p
[image:41.595.245.360.349.691.2]untuk alur kerjanya dapat dilihat pada gambar 3.10 di bawah ini.
28
[image:42.595.99.451.138.236.2]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.
[image:42.595.219.372.415.699.2]Gambar 3.12 Flowchart Kompresi Huffman
File txt || doc
File Ciphertext
Proses enkripsi
Dengan Elgamal
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
[image:43.595.157.441.548.721.2]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
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
3.2.5.3 Proses Decoding
[image:45.595.168.467.211.470.2]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
32
Gambar 3.15 Flowchart Dekompresi Huffman
3.3.
Perancangan Antar Muka (
Interface
)
3.3.1. Rancangan Halaman Utama
| 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
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)
3.3.3. Rancangan Halaman Kompresi Huffman
[image:49.595.116.444.177.321.2]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
[image:49.595.112.444.575.706.2]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
[image:50.595.64.495.283.624.2]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)
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
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
[image:52.595.142.434.555.714.2]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.
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
=g
kmod p
b
= ( k�
)
� �
Contoh:
a
=
g
kmod p
a
= 37� �
257
a
= 2187
� �
257
a
= 2187
� �
257
a
= 131
b
= ( k�
)
� �
b
1 = ( k�
1)� �
= (81
782)
� �
257
= 1875896981306802
� �
257
= 87
b
2 = ( k�
2)� �
= (81
765)
� �
257
= 1,486,991,509,572,465
� �
257
= 210
b
3 = ( k�
3)� �
= (81
767)
� �
257
= 1,532,745,094,482,387
� �
257
= 256
b
4 = ( k�
4)� �
= (81
772)
� �
257
= 1,647,129,056,757,192
� �
257
= 114
b
5 = ( k�
5)� �
= (81
777)
� �
257
40
= 229
b
6 = ( k�
6)� �
= (81
765)
� �
257
= 1,486,991,509,572,465
� �
257
= 210
b
7 = ( k�
7)� �
= (81
784)
� �
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.
[image:54.595.95.497.401.757.2]Gambar 4.2 Proses Kompresi Kompresi
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
[image:55.595.156.440.360.538.2]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
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
[image:56.595.124.472.539.709.2]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.
[image:57.595.88.506.457.704.2]Gambar