b. Bila
p
= 5 Maka 1 ≤
a
5, jadi didapat
a
= {1, 2, 3, 4}
a
p-1
mod p
1
5-1
mod 5 = 1
4
mod 5 = 1 2
5-1
mod 5 = 2
4
mod 5 = 1 3
5-1
mod 5 = 3
4
mod 5 = 1 4
5-1
mod 5 = 4
4
mod 5 = 1 Jadi, angka 5 merupakan bilangan prima sebab dalam pengecekan menggunakan
metode Fermat didapat semua hasil dari urutan bilangan yang lebih kecil dari 5 adalah 1. Untuk angka yang besar dengan jumlah nilai
a
yang banyak, hanya diambil beberapa angka sebagai contoh untuk dilakukan pengujian dengan metode Fermat.
2.4 Prinsip Kerja Algoritma ElGamal
2.4.1 Proses Pembangkitan Kunci
Langkah-langkah dalam pembangkitan kunci 1.
Pilih sembarang bilangan prima
p
disarankan bilangan prima yang bernilai besar agar aman dan uji bilangan prima tersebut dengan metode Fermat. Misalkan
p
= 271
2. Ambil bilangan α sebagai akar
primitive
mod p Misa
lkan α =107 3.
Ambil bilangan acak
a
dengan syarat
a
harus berada dalam rentang β≤
a
p-1. Misalkan
a
= 96
4. Hitung berapa x=α
a
mod p = 107
96
mod 271 = 39
Hasil dari perhitungan didapat:
1. Kunci publik
p,α,x = 271, 107, 39 2.
Kunci privat
p,a
= 271, 96
2.4.2 Proses Enkripsi
Langkah-langkah dalam mengenkripsi pesan: 1.
Terima kunci publik
p
, α, x = 271, 107, 39
2. Plainteks
m
disusun menjadi blok- blok m1, mβ, …, mp-1 sedemikian sehingga setiap
blok merepresentasikan nilai di dalam rentang 0 sampai p – 1.
3. Ubah nilai blok pesan ke dalam nilai ASCII. Ekspresikan pesan m1 =
c
= 99 kode ASCII sebagai bilangan
4. Ambil sebuah bilangan asli
b
p-1
b
= 50 5.
Hitung
y
= α
b
mod p
= 107
50
mod 271 = 238
Hitung
c = mx
b
mod p mod p
= 9939
50
mod 271 mod 271 = 99.169 mod 271
= 200 Maka dari perhitungan di atas, kita mendapatkan nilai y dan c sebagai cipherteks nya
yaitu 238, 200. Jadi, ukuran cipherteks dua kali ukuran plainteksnya. Proses diatas akan berulang untuk membaca semua blok pesan untuk menghasilkan cipherteks.
6. Kirim
y =
238 dan
c
= 200 ke pemilik kunci publik.
2.4.3 Proses Dekripsi
Langkah-langkah dalam mendekripsi pesan: 1.
Terima
y,c
dari sender = 238, 200
2. Hitung
Z = y
p-1-a
mod p
= 238
271-1-96
mod 271 = 238
174
mod 271 = 178
Hitung
M = c.z mod p
= 200. 178 mod 271 = 99. Karakter dalam ASCII adalah
c
. sesuai dengan plainteks yang dikirim sender, yang berarti bahwa plainteks ditemukan kembali dari pasangan cipherteks
y dan c. Kemudian menggabungkan lagi blok
m1, m2
, ….. menjadi plainteks yang utuh.
2.5 Defenisi Kompresi
Kompresi data adalah ilmu atau seni yang merepresentasikan informasi dalam bentuk yang lebih
compact.
Istilah kompresi tersebut diterjemahkan dari kata bahasa Inggris “compression” yang berarti pemampatan. Dalam bidang teknik, kompresi berarti proses
memampatkan sesuatu yang berukuran besar sehingga menjadi kecil. Dengan demikian, kompresi data berarti proses untuk memampatkan data agar ukurannya menjadi lebih
kecil Komputer, W. 2003. Definisi kompresi data adalah proses yang mengkonversi sebuah masukan berupa
aliran data
the source
atau data asli mentah menjadi suatu aliran data lain
the Output
, aliran bit, atau aliran sudah dikompres yang memiliki ukuran lebih kecil. Aliran data
stream dapat berupa sebuah
file
atau
buffer
pada memori. Data dalam konteks kompresi data melingkupi segala bentuk digital dari informasi, yang dapat diproses oleh sebuah
program komputer. Bentuk dari informasi tersebut secara luas dapat diklasifikasikan sebagai teks, suara, gambar dan video Salomon,D. 2007.
Tujuan kompresi data adalah untuk mempercepat dan menghemat biaya pengiriman data atau informasi tersebut. Disamping itu kompresi data juga memiliki
tujuan untuk dapat mengurangi ukuran data dan dapat disimpan pada media penyimpanan yang memiliki ukuran relatif kecil.
2.5.1 Penggolongan Algoritma Kompresi
Secara garis besar terdapat 2 buah penggolongan algoritma kompresi data yaitu kompresi
lossy,
dan kompresi
lossless
Merdiyan, M. 2005.
1. Kompresi Lossless
merupakan metoda kompresi data yang memungkinkan data asli dapat disusun kembali dari data hasil kompresi maka rasio kompresi pun tidak
dapat terlalu besar untuk memastikan semua data dapat dikembalikan ke bentuk semula.
Contoh metode ini adalah
Elias Gamma Code, Shannon-Fano Coding
,
Huffman Coding
,
Arithmetic Coding
,
Run Length Encoding,
dan lain-lain.
2. Kompresi Lossy
adalah suatu metode untuk mengkompresi data dan mendekompresinya. Data yang diperoleh mungkin berbeda dari data aslinya,
tetapi perbedaan itu cukup dekat. Metode ini paling sering digunakan untuk kompres data multimedia Audio file dan gambar. Format kompresi Lossy
mengalami
generation loss
yaitu jika mengalami prose kompresi-dekompresi berulang kali maka akan menyebabkan kehilangan kualitas secara progresif.
Contoh metode ini adalah
Transform Coding
,
Wavelet
, dan lain-lain.
2.5.2 Algoritma Elias Gamma Code
Elias Gamma Code
adalah sebuah algoritma kompresi yang dibuat oleh Peter Elias. Untuk membuat tabel kode
Elias Gamma
, Elias menambah panjang kode dalam unary u. Dalam kode berikutnya, E ditambahkan pada panjang kode M dalam biner .
Dengan demikian,
Elias Gamma Code
, yang juga untuk bilangan bulat positif, sedikit lebih kompleks untuk dibangun Salomon, D. 2007.
Adapun aturan untuk mengkodekan sebuah bilangan dengan menggunakan
Elias Gamma
Sukiman Chandra, 2013 adalah sebagai berikut:
1. Tulis bilangan n tersebut dalam bentuk biner
, hitung jumlah bit M.
2. Kurangkan 1 dari jumlah
bit
yang ditulis pada langkah pertama dan tambahkan sesuai dengan banyaknya bilangan nol u diikuti oleh angka 1.
3. Gabungkan bilangan dalam bentuk biner dengan kode dalam bentuk unar u
dengan menghilangkan angka 1 didepan sehingga menghasilkan E n.
Contoh pada bilangan
integer
4 n=4, maka : 4 = 100
M = 3 u 4 = 001
E 4 = 100001 = 00001
Elias Gamma hanya dapat digunakan untuk mengkodekan bilangan bulat positif dan mengasumsikan bahwa pengkodeaan
Gamma
hanya efisien untuk
integer
kecil tetapi tidak cocok untuk
integer
yang besar, dimana kode terparameter dari
Elias Code
yang lain adalah
Delta code
lebih cocok digunakan. Tabel
Elias Gamma Code
dapat dilihat pada Tabel 2.3.
Tabel 2.3. Tabel
Elias Gamma Code
n M
Unary u E n
hapus angka 1 disebelah kiri dari hasil E n
1 1
1 1
1 1
2 10
2 01
1 0 0 1 001
3 11
2 01
1011
011
4 100
3 001
100001 00001
5 101
3 001
100011 00011
6 110
3 001
101001 01001
7 111
3 001
101011 01011
8 1000
4 0001
10000001
0000001
9 1001
4 0001
10000011 0000011
10 1010
4 0001
10001001 0001001
11 1011
4 0001
10001011 0001011
12 1100
4 0001
10100001 0100001
Lanjutan Tabel 2.3. Tabel
Elias Gamma Code
n M
Unary u E n
hapus angka 1 disebelah kiri
dari hasil E n
13 1101
4 0001
10100011 0100011
14 1110
4 0001
10101001 0101001
15 1111
4 0001
10101011 0101011
16 10000
5 00001
1000000001 000000001
17 10001
5 00001
1000000011 000000011
18 10010
5 00001
1000001001 000001001
2.5.2.1 Konsep Kompresi Data
Untuk proses kompresi menggunakan
Elias Gamma Code
kita merujuk pada Tabel2
.
3. Dimana
Elias Gamma
ini hanya cocok diterapkan untuk bilangan desimal 1 hingga 15 karena pengkodean kelima belas bilangan ini hanya memerlukan jumlah
bit
1 hingga 7
bit
sehingga efisiensi penyimpanan di dapat. Proses kompresi sendiri didasarkan pada bahwa isi
file
akan dibaca secara per
byte
8
bit
sehingga menghasilkan nilai pembacaan antara 0 hingga 255.
Suatu metode pada kompresi data akan menghasilkan bit-bit satuan terkecil pembentuk data data baru yang lebih pendek dibandingkan oleh bit-bit data sebelum
dikompresi. Bit-bit data yang lebih pendek tersebut biasanya tidak akan bisa dibaca oleh komputer sebelum dilakukan proses
encoding
. Pada proses
encoding
bit-bit data tersebut di-
encode
setiap delapan bitnya sehingga membentuk satu karakter yang dapat dibaca oleh komputer. Begitu juga sebaliknya, pada saat dekompresi bit-bit data tersebut di-
decode
kembali agar membentuk bit-bit data semula yang akan digunakan dalam proses dekompresi. Karena pada saat proses dekompresi dibutuhkan bit-bit data sebelum di-
Encode
untuk dapat dibaca kembali dalam proses dekompresi. Didalam komputer satu karakter direpresentasikan oleh bilangan ASCII
American Standard Code For Information Interchange
sebanyak delapan bit dalam bilangan biner. Jika ternyata jumlah bit-bit data tersebut bukan merupakan kelipatan
delapan. Maka dibentuk variabel baru sebagai penambahan ke bit-bit data itu agar bit-bit data tersebut habis dibagi delapan. Variabel ini adalah
padding
dan
flagging
.
1.
Padding Padding
adalah penambahan bit 0 sebanyak kekurangan jumlah bit-bit data pada hasil proses kompresi sehingga jumlah keseluruhan bit-bit data tersebut merupakan kelipatan
delapan habis dibagi delapan. Contoh misalkan dihasilkan bit-bit data hasil kompresi yaitu 1001011. Terdapat 7 bit data dalam bilangan biner. Maka dilakukan penambahan
bit 0 sebanyak 1 kali agar jumlah bit-bit data tersebut habis dibagi delapan. Sehingga bit
bit data itu menjadi 10010110 setelah diberikan
padding
. 2.
Flagging Flagging
adalah penambahan bilangan biner sepanjang delapan bit setelah
padding
dimana
flagging
ini adalah sejumlah bilangan yang memberikan sebuah tanda bahwa terdapat n buah
padding
di dalam bit-bit data hasil dari kompresi. Penambahan
flagging
ini dimaksudkan untuk mempermudah dalam membaca bit-bit data hasil kompresi pada saat proses dekompresi. Contoh misalkan bit-bit data yang telah diberikan
padding
adalah10010110. Karena terdapat 1 bit penambahan
padding
maka
flag
nya adalah bilangan biner dari 1 dengan panjang 8 bit yaitu 00000001. Sehingga bit-bit datanya
menjadi 1001011000000001 setelah diberikan
flagging
. Contoh :
Berikut ini adalah contoh proses kompresi
file
teks dengan metode
Elias Gamma Code
. Terdapat
file
teks yang berisikan
string
“KUKU KAKI KAKAK KAKEKKU KAKU”. Untuk ukuran
String
dapat dilihat pada Tabel 2.4. Tabel 2.4.
String
yang Belum Dikompresi char ASCII
Code
ASCII
Code
Binary Bit
Frek Bit x Frek
K 75
01001011 8
13 104
A 65
01000001 8
5 40
U 85
01010101 8
4 32
Sp 32
00100000 8
4 32
Lanjutan Tabel 2.4.
String
yang Belum Dikompresi char ASCII
Code
ASCII
Code
Binary Bit
Frek Bit x Frek
I 73
01001001 8
1 8
E 69
01000101 8
1 8
Total 224
Berdasarkan kode ASCII, satu karakter bernilai delapan bit bilangan biner. Sehingga 35 karakter pada
string
mempunyai nilai biner sebanyak 224 bit. Sebelum melakukan proses kompresi, karakter tersebut diurutkan terlebih dahulu berdasarkan dari karakter
yang memiliki frekuensi terbesar ke terkecil. Proses kompresi untuk
Elias Gamma Code
dapat dilihat pada Tabel 2.5 Tabel 2.5.
String
yang Sudah Dikompresi Dengan Elias Gamma Code char
Elias Gamma Code Bit
Frek Bit x Frek
K 1
1 13
13 A
001 3
5 15
U 011
3 4
12 Sp
00001 5
4 20
I 00011
5 1
5 E
01001 5
1 5
Total 70
Dapat dibentuk
string
bit dari
string
sebelum dikompresi yaitu “ KUKU KAKI KAKAK KAKEKKU
KAKU” menjadi
string
bit “1011101100001100110001100001100110011000011001101001110110000110011011”
. Sebelum ditulis ke sebuah
file
hasil kompresi dilakukan penambahan bit-bit
padding
dan
flagging
diakhir
String
bit. Bit-bit itu dihasilkan dari panjang
String
bit itu sendiri apakah habis dibagi delapan dan berapa sisanya jika dibagi delapan. Karena jumlah
String
bit 70 tidak habis dibagi delapan dan sisanya 6. Maka dapat dibuat
padding
“00”
dan
flaggingnya
adalah “00000010”
menjadi“1011101100001100110001100001100110011000011001101001110110000110
0110110000000010
”. Sehingga total bit seluruhnya setelah penambahan
padding
dan
flagging
adalah 80 bit.
2.5.3. Pengukuran Kinerja Kompresi Data
Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa faktor atau variabel yang biasa digunakan untuk mengukur kualitas dari suatu teknik kompresi
data tersebut, yaitu: 1.
Ratio of compression
Rc
Ratio of compression
Rc adalah perbandingan antara ukuran data sebelum dikompresi dengan ukuran data setelah dikompresi.
Rc = Salomon dan Motta, 2010
Misalkan didapat sebuah nilai
Ratio of compression
sebesar 2.75. Itu berarti besar data sebelum kompresi adalah 2.75 kali lipat dari besar data setelah dikompresi.
2.
Compression ratio
Cr
Compression ratio
Cr adalah persentasi besar data yang telah dikompresi yang didapat dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran data
sebelum dikompresi.
Cr =
x
100 Salomon dan Motta, 2010 Misalkan didapat sebuah nilai
Compression ratio
sebesar 35. Itu berarti setelah dikompresi ukuran data adalah 35 dari data sebelum dikompresi.
3.
Redundancy
Rd
Redundancy
Rd adalah kelebihan yang terdapat di dalam data sebelum dikompresi. Jadi setelah data dikompresi dapat dihitung
Redundancy
data yaitu persentasi dari hasil selisih antara ukuran data sebelum dikompresi dengan data setelah dikompresi.
� = −� Salomon dan Motta, 2010
Misalkan didapat sebuah nilai
Redundancy
sebesar 14. Itu berarti besarnya kelebihan data sebelum dikompresi adalah 14.
BAB 3 ANALISIS DAN PERANCANGAN SISTEM