• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2016

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

Copied!
118
0
0

Teks penuh

(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,

(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

(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 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

(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.

(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

(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

(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

(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)

(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 = g

x

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

(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 (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

t

11

1 = u2¹

10 = u2

2u = 10

u = 5

Langkah 3: misalkan a = 4

Langkah 4:

a

u

(mod n)

mod n = a

u

mod n = 4

5

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

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

k

mod p

b = y

k

m 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 – x

mod p

2.

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

m = b/a

x

mod p = b (a

x

)

– 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 = g

x

mod p = 2

1751

mod 2357 = 1185

Hasil: Kunci public: (y = 1185, g = 2, p = 2357)

Kunci privat: (x = 1751, p = 2357).

(23)

Bob menghitung

a = g

k

mod p = 2

1520

mod 2357 = 1430

b = y

k

m 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 – x

mod p = 1430

605

mod 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].

(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

(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 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

(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)

(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 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.

(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 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.

(29)

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

(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

(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

(33)
[image:33.595.95.459.105.479.2]

Gambar 3.2 Use-Case Diagram Pada Sistem

3.1.3.2. Activity Diagram

(34)

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.

(35)
[image:35.595.90.507.70.475.2]

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

[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

(37)
[image:37.595.100.496.124.586.2]

3.1.3.6 Activity Diagram Proses Dekripsi Elgamal

Gambar 3.6 Activity Diagram Proses Dekripsi Elgamal

(38)

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

(39)
[image:39.595.96.463.176.474.2]

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

k

mod p

dengan nilai

x

adalah kunci

private

.

(40)

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

k

mod p

b = (

k

)

� �

[image:40.595.85.456.213.663.2]

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

(a

x

)

– 1

= C

p – 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 (a

x

)

– 1

mod p

[image:41.595.245.360.349.691.2]

untuk alur kerjanya dapat dilihat pada gambar 3.10 di bawah ini.

(42)

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

(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

[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

(44)
[image:44.595.123.471.577.750.2]

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

[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

(46)
[image:46.595.232.378.79.352.2]

32

Gambar 3.15 Flowchart Dekompresi Huffman

3.3.

Perancangan Antar Muka (

Interface

)

3.3.1. Rancangan Halaman Utama

(47)
[image:47.595.116.478.71.423.2]

| 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

(48)
[image:48.595.64.493.70.404.2]

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

[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]
(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

[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)

(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

[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.

(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

=

g

k

mod p

b

= ( k

)

� �

Contoh:

a

=

g

k

mod p

a

= 37

� �

257

a

= 2187

� �

257

a

= 2187

� �

257

a

= 131

b

= ( k

)

� �

b

1 = ( k

1)

� �

= (81

7

82)

� �

257

= 1875896981306802

� �

257

= 87

b

2 = ( k

2)

� �

= (81

7

65)

� �

257

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

� �

257

= 210

b

3 = ( k

3)

� �

= (81

7

67)

� �

257

= 1,532,745,094,482,387

� �

257

= 256

b

4 = ( k

4)

� �

= (81

7

72)

� �

257

= 1,647,129,056,757,192

� �

257

= 114

b

5 = ( k

5)

� �

= (81

7

77)

� �

257

(54)

40

= 229

b

6 = ( k

6)

� �

= (81

7

65)

� �

257

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

� �

257

= 210

b

7 = ( k

7)

� �

= (81

7

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.

[image:54.595.95.497.401.757.2]

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

[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

(56)
[image:56.595.152.416.81.352.2]

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]
(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.

[image:57.595.88.506.457.704.2]

Gambar

Gambar

Gambar 3.2 Use-Case Diagram Pada Sistem
Gambar 3.3 Activity Diagram Proses Enkripsi Elgamal
Gambar 3.4 Activity Diagram Proses Kompresi Huffman
Gambar 3.5 Activity Diagram Proses Dekompresi Huffman
+7

Referensi

Dokumen terkait

Bahwa, pemeriksaan tersebut dilakukan dengan cara melihat dan menghitung barang, menyesuaikan barang dengan berita acara penerimaan barang yang berlokasi di SMAN 1 Tanjung Raja

Kalimantan Selatan (74% atau 11 orang perawat) patuh dalam melaksanakan SOP pemasangan infus, namun masih terdapat sebagian kecil (13% atau 2 orang perawat) IGD

Tujuan umum dalam penyusunan makalah ini yaitu untuk mengetahui dan memahami tentang konsep dasar penyakit sindrom nefrotik dan asuhan keperawatan yang benar pada pasien dengan

The product of the pozzolanic reaction (secondary C-S-H) can incorporate alkali metal ions into their structure and reduce the alkalinity of the pore solution. At the same time, the

I ndofood Sukses Makm ur ( I NDF) akan m engerek har ga t epung t erigu karena sej ak Mei 2018 harga t epung t elah naik 10% sebagai dam pak kenaikan harga gandum di pasar global

[r]

Peraturan Menteri Dalam Negeri Nomor 32 Tahun 2011 tentang Pedoman Pemberian Hibah dan Batuan Sosial Yang Bersumber Dari Anggaran Pendapatan dan Belanja Daerah

yaitu dengan cara memberikan jasa pelayanan sesuai dengan yang diharapkan oleh pelanggan.. Kualitas pelayanan mempunyai hubungan yang erat dengan tingkat kepuasan