3.1.3.7 Sequence Diagram
Gambar 3.7 Sequence Diagram
3.2. Perancangan Sistem
3.2.1. Pembuatan Algoritma Program Pembuatan algoritma program adalah proses penerjemahan langkah-langkah algoritma
Elgamal serta algoritma Hufman, ke dalam sebuah bahasa pemograman. Tahap-tahap yang dilalui dalam pembuatan algoritma program yaitu:
1. Pembuatan alur proses sistem secara umum.
2. Pembuatan alur proses enkripsi dan dekripsi dengan menggunakan algoritma Elgamal
dan penerapan algoritma Elgamal ke dalam bahasa pemrograman C. 3.
Pembuatan alur proses kompresi dan dekompresi dengan menggunakan algoritma Huffman dan penerapan algoritma Huffman ke dalam bahasa pemrograman C.
4. Pembuatan alur proses pengujian bilangan prima menggunakan Rabin-Miller dan
penerapan Rabin-Miller ke dalam bahasa pemrograman C. 3.2.2. Alur Proses Sistem Secara Umum
Universitas Sumatera Utara
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.
Setelah melakukan pembangkitan kunci dapat dilakukan proses enkripsi. Proses Enkripsi Elgamal menggunakan kunci publik ,
� dan . Berikut proses enkripsi algoritma Elgamal:
Universitas Sumatera Utara
1. Susunlah plainteks menjadi blok-blok �1,�2,�3,…. Kemudian setiap blok huruf diubah
menjadi bilangan ASCII.
2
. Pilih Bilangan acak k dengan syarat 0 ≤ � ≤ − 2, maka 0 ≤ � ≤ 257 − 2 → 0 ≤ � ≤ 255.
3. Setiap blok m dienkripsikan dengan rumus:
a
=
g
k
mod p b
=
k
� � �
untuk lebih jelasnya dapat dilihat pada gambar 3.9 di bawah ini.
Gambar 3.9 Flowchart Enkripsi pada Elgamal
Universitas Sumatera Utara
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 untuk alur kerjanya dapat dilihat pada gambar 3.10 di bawah ini.
Gambar 3.10 Flowchart Dekripsi pada Elgamal
Universitas Sumatera Utara
Proses enkripsi dan dekripsi dengan menggunakan Elgamal secara umum dapat dijelaskan dengan diagram blok seperti pada gambar 3.11
Gambar 3.11 Diagram Blok Proses Elgamal
3.2.5. Alur Proses Kompresi Pada Huffman
Pengkodean Huffman adalah teknik untuk mengompresi data. Algoritma greedy Huffman melihat terjadinya masing-masing karakter dan sebagai string biner secara optimal Huffman
coding adalah bentuk coding statistik yang mencoba untuk mengurangi jumlah bit yang diperlukan untuk merepresentasikan string dari simbol [4]. Berikut ini alur kerja kompresi
algoritma Huffman.
Gambar 3.12 Flowchart Kompresi Huffman
File txt || doc File Ciphertext
Proses enkripsi Dengan Elgamal
Proses dekripsi Dari Elgamal
Universitas Sumatera Utara
3.2.5.1. Proses Pembentukan Pohon Huffman
Kode Huffman pada dasarnya merupakan kode prefiks prefix code. Kode prefiks adalah himpunan yang berisi sekumpulan kode biner, dimana pada kode prefik ini tidak ada kode
biner yang menjadi awal bagi kode biner yang lain. Kode prefiks biasanya direpresentasikan sebagai pohon biner yang diberikan nilai atau label. Untuk cabang kiri pada pohon biner
diberi label 0, sedangkan pada cabang kanan pada pohon biner diberi label 1. Rangkaian bit yang terbentuk pada setiap lintasan dari akar ke daun merupakan kode prefiks untuk karakter
yang berpadanan. Pohon biner ini biasa disebut pohon Huffman. Sebagai contoh, dalam kode ASCII string
7 huruf “RACHMAT” membutuhkan representasi 7 × 8 bit = 56 bit 7 byte, dengan rincian sebagai berikut:
R = 82 = 01010010 A = 65 = 01000001
C = 67 = 01000011 H = 72 = 01001000
M = 77 = 01001101 A = 65 = 01000001
T = 84 = 01010100 Berikut tabel yang menjelaskan jumlah bit huruf “RACHMAT” sebelum dilakukan proses
kompresi:
Tabel 3.1 Jumlah Frequensi dan Bit Sebelum Proses Kompresi Untuk Karakter “RACHMAT”.
Char Freq
Bit FreqBit
R 1
8 8
A 2
8 16
C 1
8 8
H 1
8 8
M 1
8 8
T 1
8 8
Jumlah 56
Universitas Sumatera Utara
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
FreqBit
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
Jumlah 18 bit
Universitas Sumatera Utara
3.2.5.3 Proses Decoding Decoding merupakan kebalikan dari encoding. Decoding berarti menyusun kembali data dari
string biner menjadi sebuah karakter kembali. Decoding dapat dilakukan dengan dua cara, yang pertama dengan menggunakan pohon Huffman dan yang kedua dengan menggunakan
tabel kode Huffman, berikut gambar proses decoding pohon Huffman:
Gambar 3.14 Proses Decoding dengan Menggunakan Pohon Huffman
3.2.6. Alur Proses Dekompresi Pada Huffman
Setelah file dikompresi maka untuk mengembalikannya seperti semula diperlukan proses dekompresi, berikut flowchart dekompresi pada algoritma Huffman pada gambar 3.15.
Universitas Sumatera Utara
Gambar 3.15 Flowchart Dekompresi Huffman
3.3. Perancangan Antar Muka