Perancangan Sistem ANALISIS DAN PERANCANGAN

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