Implementasi Algoritma Kunci Publik Luc dan Algoritma Kompresi Goldbach Codes untuk Perancangan Aplikasi Pengamanan dan Kompresi File

7

BAB 2
LANDASAN TEORI

Bab 2 membahas tinjauan teoritis yang berkaitan dengan algoritma kriptografi LUC
dan algoritma kompresi Goldbach Codes.

2.1 Kriptografi
Informasi dalam sebuah data memiliki nilai penting, dimana isi data dari informasi
tersebut harus dijaga kerahasiaannya dari pihak yang ingin melakukan pembobolan
data. Berkembangnya zaman menuju era teknologi yang sangat maju, kini kriptografi
telah banyak digunakan untuk pengamanan data seperti gambar, pesan, audio, berkas
biner maupun dokumen.

2.1.1 Definisi kriptografi

Kata-kata “cryptography”, “cryptology” dan “cryptanalysis” umunya berubah-ubah
dan masing-masing dari kata tersebut memiliki makna yang berbeda. Cryptography
yang awal katanya menggunakan kata “crypt”, dalam bahasa Yunani kruptos yang
artinya sembunyi. Kata terakhir “graphy” mengacu pada arti tulisan. Kriptografi

memiliki arti sebagai tulisan yang tersembunyi. (Batten, 2013).
Secara umum, kriptografi mengacu pada bagian enkripsi untuk membangun
sebuah sistem transmisi rahasia. Sistem transmisi rahasia tersebut merupakan proses
enkripsi dalam kriptografi, dimana mengubah plainteks (informasi awal) menjadi
cipherteks. Pada gambar 2.1 adalah proses kriptografi secara umum:

Universitas Sumatera Utara

8

Kunci

Kunci

Cipherteks
Plainteks

Enkripsi

Dekrispi


Plainteks

Gambar 2.1 Urutan Proses Kriptografi (Munir, 2006)

Proses kriptografi pada umumnya, mengubah plainteks menjadi cipherteks,
yang mana hasil dari cipherteks berupa simbol-simbol atau notasi angka yang tidak
dapat dibaca oleh orang awam. Umunya, proses enkripsi dan dekrisp memerlukan
kunci untuk menghasilkan cipherteks dan plainteks yang diinginkan. Cipherteks dapat
dikembalikan menjadi tulisan awal dengan dilakukannya proses dekripsi.

2.1.2 Sejarah kriptografi

Secara historis ada empat kelompok orang yang berkontribusi terhadap perkembangan
kriptografi, dimana mereka menggunakan kriptografi untuk menjamin kerahasiaan
dalam komunikasi pesan penting, yaitu kalangan militer (termasuk intelijen dan matamata), kalangan diplomatik, dan penulis buku harian. Diantara empat kelompok ini,
kalangan militer yang memberikan kontribusi paling penting karena pengiriman pesan
di dalam suasana perang membutuhkan teknik enkripsi dan dekripsi yang rumit.
Kriptografi mengalami perkembangan yang sangat pesat pada masa
peperangan. Pada masa peperangan, terdapat tuntutan untuk menyampaikan informasi

yang tidak boleh diketahui oleh musuh. Terdapat beberapa cara enkripsi pesan pada
zaman perang, enkripsi yang paling sering digunakan adalah enkripsi manual yang
dilakukan secara langsung oleh manusia. Namun ada beberapa negara yang
melakukan enkripsi dengan menggunakan mesin. Contohnya negara Jerman dan
Jepang. Penggunaan alat tersebut bertujuan untuk memudahkan proses enkripsi dan
data menjadi lebih aman.

Universitas Sumatera Utara

9

Pada zaman Romawi kuno, Julius Caesar telah menggunakan teknik
kriptografi yang dijuluki Caesar Cipher untuk mengirimkan pesan rahasia. Meskipun
teknik yang digunakan masih belum memadai.
Pada pedang dunia ke-II, pemerintah Nazi Jerman membuat mesin enkripsi
yang dinamakan mesin Enigma. Mesin Enigma menggunakan beberapa buah rotor
(roda berputar) untuk melakukan enkripsi dengan cara yang sangat rumit. Awalnya,
pihak sekutu kesulitan untuk memecahkan kode mesin kriptografi Jerman, namun
seiring berjalannya waktu pihak sekutu mempelajari mesin Enigma dan berhasil
memecahkan kode tersebut. Mesin Enigma dapat dilihat pada gambr 2.2


Gambar 2.2. Mesin Enkripsi Enigma yang digunakan oleh Tentara Jerman pada
Masa Perang Dunia ke-II. (Munir, 2006)

Masa depan kriptografi akan dipengaruhi oleh perkembangan matematika
terutama dalam hal algoritma. Perkembangan algoritma untuk proses kriptografi
sering diggunakan dalam bidang teknologi. Banyak aplikasi kriptografi yang
diimplementasikan untuk memenuhi pengamanan data sebuah instansi atau perangkat
telekomunikasi.

Universitas Sumatera Utara

10

2.1.3 Tujuan kriptografi

Kriptografi bertujuan untuk memberikan aspek keamanan sebuah pesan atau informasi
yang akan dikirim. Berikut ini aspek-aspek keamanan dalam kriptografi (Forouzan,
2007):
1. Kerahasiaan Data (Data Confidentialy)

Kerahasiaan data dirancang untuk memproteksi data dari penyerangan yang
ingin membuka data.
2. Integritas Data (Data Integrity)
Integritas data adalah sebuah rancangan untuk memproteksi data dari
modifikasi, penyisipan, penghapusan, dan orang yang tidak memiliki hak
untuk membalas sebuah pesan.
3. Otentikasi (Authentication)
Mengidentifikasi kebenaran sumber pesan baik dari si pengirim maupun si
penerima. Dua pihak harus saling berkomunikasi untuk mengotentikasi satu
sama lain sehingga ia dapat memastikan sumber pesan yang dikirim melalui
saluran asalanya atau tidak.
4. Menolak Penyangkalan (Non-Repudiation)
Memberikan perlindungan dengan cara penolakan sebuah data baik dari si
pengirim ataupun si penerima. Dalam non-repudiation akan membuktikan
apakah data tersebut orisinil, penerima data dapat membuktikan identitas dari
si pengirim jika disangkal. Non-repudiaton juga membuktikan dengan bukti
pengiriman, apakah pesan yang dikirim diterima langsung oleh si penerima
pesan.
5. Acces Control


Memberikan akses data yang tidak sah. Akses dalam istilah ini adalah sangat
luas dan dapat melibatkan membaca, menulis, memodifikasi, program
eksekusi dan sebagainya.

Universitas Sumatera Utara

11

2.1.4 Terminologi dan konsep dasar kriptografi

Dalam ilmu kriptografi akan ditemukan beberapa istilah atau terminologi yang sangat
penting untuk diketahui dalam memahami kriptografi. Oleh karena itu, penulis akan
menjelaskan beberapa istilah penting dalam kriptografi yang akan sering digunakan
dalam penulisan. Berikut beberapa istilah penting dalam kriptografi.

a) Plainteks dan Cipherteks

Dalam memahami bidang ilmu kriptografi, sering muncul kata plainteks.
Plainteks diartikan sebagai pesan awal atau pesan asli dari si pengirim yang.
Umunya, plainteks merupakan sebuah pesan yang belum mengalami

perubahan sama sekali. Plainteks dapat berupa teks, dokumen, video ataupun
audio.
Plainteks yang akan dikirim oleh si pengirim dapat diubah menjadi
kode-kode, simbol ataupun angka yang tidak diketahui maknanya, istilah ini
disebut sebagai cipherteks. Cipherteks adalah sebuah metode untuk
merahasiakan tulisan tangan, dimana plainteks (pesan awal) diubah menjadi
cipherteks.
Berikut ini merupakan perbandingan antara plainteks dan cipherteks
pada gambar 2.3

Gambar 2.3 Perbandingan Plainteks dan Cipherteks. (Munir, 2005).

Universitas Sumatera Utara

12

b) Sender dan Recipient

Pertukaran informasi data atau pengiriman data melibatkan dua entitas, dimana
adanya sender (pengirim) dan recipient (penerima). Entitas disini tidak hanya

orang yang melakukan pengiriman pesan dan penerima pesan, tetapi juga dapat
berupa mesin komputer, kartu kredit, dan sebagainya. Orang dapat bertukar
informasi dengan orang lain, contoh Bob mengirim pesan kepada Alice.
Sedangkan didalam mesin komputer seperti mesin ATM yang berkomunikasi
dengan komputer server di bank.
Pengirim tentu ingin mengirimkan pesan dan menyimpan pesan secara
aman, ia yakin bahwa tidak ada pihak lain yang membaca pesan tersebut. Hal ini
dapat dilakukan dengan melakukan proses penyandian pesan atau cipherteks.

c) Enkripsi dan Dekripsi
Proses penyandian pesan, dari plainteks ke cipherteks dinamakan dengan enkripsi
(encryption) atau enchipering (standard nama menurut ISO 7498-2).
Sedangkan proses mengembalikan pesan dari cipherteks ke plainteks
dinamakan dengan dekripsi

(descryption) atau dechipering (standard nama

menurut ISO 7498-2). Proses enkripsi dan dekripsi dapat diterapkan pada pesan
yang dikirim ataupun pesan yang disimpan. Encryption of data in motion
mengacu pada enkripsi pesan yang ditransmisikan melalui saluran komunikasi,

sedangkan istilah encryption of data at-rest mengacu pada enkripsi pesan yang
tersimpan di dalam storage.

d) Kriptanalis dan Kriptologi
Ilmu kriptografi untuk menjaga kerahasiaan plainteks dari kriptanalis. Kriptanalis
berusaha mengungkap plainteks atau kunci rahasia yang dipakai untuk plainteks.
Kriptanalis juga dapat menemukan kelemahan dari sistem kriptografi yang pada

Universitas Sumatera Utara

13

akhirnya mengarah dan menemukan kunci unutk mengungkap isi plainteks
(Munir, 2006).
Kriptologi dapat juga diartikan sebagai seni dan ilmu untuk membuat dan
memecahkan kode rahasia. Kriptologi dibagi menjadi kriptografi (seni dan ilmu
membuat kode rahasia), kriptanalisis (ilmu dan seni untuk memecahkan chiperteks
menjadi plainteks tanpa mengetahui kunci yang digunakan).

2.1.5 Jenis kriptografi


Kriptografi berdasarkan kunci enkripsi dan dekripsinya terbagi menjadi dua, yaitu:

1. Kriptografi Simetri
Kriptografi Simetri adalah Salah satu jenis algoritma yang menggunakan kunci
enkripsi yang sama dengan kunci dekripsinya. Sistem kriptografi kunci-simetri
diasumsikan sebagai pengirim dan penerima sudah memiliki kunci yang sama.
(Zelvina, 2012).
Keamanan Algoritma Simetri terletak pada kerahasiaan kuncinya. Contoh
algoritma simetri adalah DES (Data Encryption Standar), AES (Advanced
Encryption Standard), RC4, Vernam, dll. Proses enkripsi dan dekripsi algoritma

simetri terdapat pada Gambar 2.4:
Kunci Privat, K

Kunci Privat, K

Plainteks

Enkripsi

EK (P)
=C

Cipherteks, C

Dekripsi

Plainteks, P

DK (C) = P

Gambar 2.4 Skema Kriptografi Simetri. Kunci Simetri Sama dengan Kunci
Dekripsi, yaitu K (Munir, 2006)

Universitas Sumatera Utara

14

a. Kelebihan Kriptografi Simetri
1. Algoritma kriptografi simetri dirancang sehingga proses enkripsi/dekripsi

membutuhkan waktu yang singkat.
2. Ukuran kunci simetri relatif pendek.
3. Algoritma kriptografi simetri dapat digunakan untuk membangkitkan

bilangan acak.
4. Algorima kriptografi simetri dapat disusun untuk menghasilkan cipher

yang lebih kuat.
5. Otentikasi pengirim pesan langsung diketahui dari cipherteks yang

diterima, karena kunci hanya diketahui oleh pengirim dan penerima pesan
saja.

b. Kekurangan Kriptografi Simetri

1. Kunci simetri harus dikirim melalui saluran yang aman. Kedua entitas
yang berkomunikasi harus menjaga kerahasisan kunci ini.
2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi.

2. Kriptografi Asimetri
Algoritma asimetri adalah algoritma kriptografi yang enkripsi dan dekripsnya
menggunakan kunci yang berbeda. Kunci enkripsi tidak bersifat rahasia atau diketahui
oleh umum yang dinamakan sebagai public key (kunci public).
Kunci dekripsi disimpan dan digunakan hanya untuk penerima pesan yang
dinamakan sebagai kunci private key (kunci privat). Contoh Algoritma Asimetri
adalah RSA (Rivest Shamir Adleman), ECC (Elliptical Curve Cryptography),
Elgamal, Algoritma LUC, dan sebagainya. Dalam Gambar 2.5 memperlihatkan proses
aliran enkripsi dan dekripsi.

Universitas Sumatera Utara

15

Kunci Publik, K1

Enkripsi
Plainteks, P

EK1 (P) = C

Kunci Privat, K2
Cipherteks,
C

Dekripsi
DK2 (C) = P

Plainteks

Gambar 2.5 Skema Algoritma Asimetri (Munir, 2006)

a. Kelebihan Kriptografi Asimetri

1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas
yang berkomunikasi (tetapi, otentikasi kunci publik tetap harus terjamin).
Tidak ada kebutuhan mengirim kunci privat sebagaimana pada sistem
simetri.
2. Pasangan kunci publik/kunci privat tidak perlu diubah, bahkan dalam
periode waktu yang panjang.
3. Dapat digunakan untuk mengamankan pengiriman kunci simetri.
4.

Beberapa algoritma kunci-publik dapat digunakan untuk memberi tanda
tangan digital pada pesan (akan dijelaskan pada materi kuliah selanjutnya)

b. Kekurangan Kriptografi Asimetri

1.

Enkripsi dan dekripsi data umumnya lebih lambat daripada sistem simetri,
karena enkripsi dan dekripsi menggunakan bilangan yang besar dan
melibatkan operasi perpangkatan yang besar.

2.

Ukuran cipherteks lebih besar daripada plainteks (bisa dua sampai empat
kali ukuran plainteks).

3.

Ukuran kunci relatif lebih besar daripada ukuran kunci simetri.

Universitas Sumatera Utara

16

4.

Karena kunci publik diketahui secara luas dan dapat digunakan setiap
orang, maka cipherteks tidak memberikan informasi mengenai otentikasi
pengirim.

5. Tidak ada algoritma kunci-publik yang terbukti aman (sama seperti block
cipher). Kebanyakan aalgoriam mendasakan keamanannya pada sulitnya

memecahkan persoalan-persoalan aritmetik (pemfaktoran, logaritmik, dsb)
yang menjadi dasar pembangkitan kunci

2.2 Algoritma LUC
Algoritma ini merupakan salah satu jenis algoritma asimetri. Pada sub bab ini penulis
akan menjelaskan tentang Algoritma LUC beserta cara kerja algoritma LUC itu
sendiri.

2.2.1

Perkembangan algoritma LUC

Pada tahun 1993, Smith dan Michael menyatakan bahwa algoritma LUC merupakan
algoritma yang dijabarkan dari deret Lucas. Sehingga didapat rumus enkripsi dan
dekripsi dari barisan lucas tersebut.
Algoritma LUC mempunyai ciri khas dari algoritma kriptografi asimetri yang
lain, dimana setiap katakter dari string berupa teks atau plainteks yang dimasukkan,
lalu dikonversi kedalam bentuk bilangan dengan kode ASCII (American Standard
Code for Information Interchange). Inputan file teks berupa file berecord, setip

kalimat merupakan satu record. Plainteks dipecah kedalam blok berisi 2 karakter yang
kemudian dilakukannya enkripsi pada tiap-tiap blok. Cipherteks yang diperoleh
merupakan merupakan hasil gabungan dari blok-blok plainteks yang telah di enkripsi.
Untuk proses dekripsi, tiap-tiap blok dikonversi kembali dengan kode ASCII
untuk menghasilkan plainteks yang diinginkan.

Besaran-besaran yang digunakan

pada Algoritma LUC adalah:

Universitas Sumatera Utara

17

a. Bilangan prima p dan q
b. Kode ASCII 255
c. Plainteks berupa file berecord
d. Kunci e merupakan public key dan kunci d yang bersifat private key.

2.3 Landasan Matematika Algoritma LUC
Dalam mempelajari algoritma kriptografi, sebaiknya memahami terlebih dahulu
konsep-konsep dasar perhitungan matematis yang akan digunakan dalam suatu
algoritma kriptografi tersebut.

2.3.1

Aritmatika modulo

Aritmatika modulo merupakan salah satu peran yang penting dalam komputasi
integer, khususnya pada aplikasi kriptografi. Operator yang digunakan pada aritmatika

modulo adalah mod (modulo) yang menyatakan sisa hasil pembagian.
Diberikan a bilangan bulat dan m adalah bilangan bulat > 0. Operasi a mod m
(dibaca ”a modulo m”) memberikan sisa yang merupakan hasil dari pembagian a
dengan m. Dengan kata lain, a mod m = r , sehingga a = m.q + r, dengan 0 ≤ r < m.
Dinotasikan: a mod m = r , = m.q + r, dengan 0 ≤ r < m. Sebagai contoh:
Jika 11 mod 3 = 2 , maka 11 = 3(3) + 2.

2.3.2

Least Common Multiple (LCM)

Least Common Multiple (LCM) dari suatu himpunan bilangan adalah bilangan terkecil

yang merupakan kelipatan dari setiap anggota himpunan itu. Juga merupakan bahasa
lain dari KPK (Kelipatan Persekutuan Terkecil). Contoh, LCM dari 4 dan 6 dengan
perhitungan manual dapat ditulis seperti dibawah ini:

Universitas Sumatera Utara

18

4 = 4, 8, 16, 24, 38, 32, 36, 40,…
6 = 6, 12, 18, 24, 30, 36, 42, …
Kelipatan persekutuannya adalah bilangan-bilangan yang muncul pada kedua baris
geometri tersebut, yakni 12, 24, dan 36. Jadi, LCM dari 4 dan 6 adalah 12.

2.3.3 Fermat’s Little Theorem
Teorema Little Fermat memberikan uji yang baik untuk ketidakprimaan. Peranan
penting Fermat’s Little Theorem dalam kriptografi adalah mempermudah perhitungan
matematis prima sebagai dasar dari teknik enkripsi asimetris.
Untuk bilangan prima (p) dan bilangan bulat (a) , a p≡ a (mod p). Di mana p
adalah bilangan bulat dan a adalah urutan bilangan yang lebih kecil dari p. Jika
hasilnya ≠ 1, maka p bukan bilangan prima. Sebaliknya, jika hasilnya = 1, maka p
bilangan prima. Berikut ini contoh penerapan metode Fermat:
a. Bila p = 6
Maka 1 ≤a < 6, didapat a = {1, 2, 3, 4, 5}
a

p-1

mod p

16-1 mod 6 = 15 mod 6 = 1
26-1 mod 6 = 25 mod 6 = 2
36-1 mod 6 = 35 mod 6 = 3
46-1 mod 6 = 45 mod 6 = 4
56-1 mod 6 = 55 mod 6 = 5

Setelah melakukan perhitungan untuk memastikan apakah 6 bilangan prima
atau tidak, ditemukan hasil ≠ 1 yaitu (2, 3, 4, 5), maka dipastikan bahwa 6 bukan
merupakan bilangan prima.

b. Bila p = 7
Maka 1 ≤ a < 7, didapat a = {1, 2, 3, 4, 5, 6}
a

p-1

mod p

1 7-1 mod 7 = 16 mod 7 = 1

Universitas Sumatera Utara

19

2 7-1 mod 7 = 26 mod 7 = 1
3 7-1 mod 7 = 36 mod 7 = 1
4 7-1 mod 7 = 46 mod 7 = 1
5 7-1 mod 7 = 56 mod 7 = 1
6 7-1 mod 7 = 66 mod 7 = 1

Hasil diatas menunjukkan perhitungan untuk memastikan apakah 7 bilangan
prima atau tidak, ditemukan hasil dari semua perhitungan = 1, maka jelas bahwa 7
merupakan bilangan prima.

2.3.4. Algoritma Lehman

Algoritma Lehman membagi suatu bilangan yang akan diuji, misal p dengan bilangan
prima kurang dari 256 pengujian, dengan cara membangkitkaan bilangan acak a yang
lebih kecil dari p dan dihitung a (p-1)/2mod p yang bernilai 1 atau -1. Berarti p
berpeluang prima sebesar 50% yang apabila langkah ini dulang dan lolos sebanyak t
kali, maka akan menghasilkan sebuah bilangan prima p yang mempunyai kesalahan
tidak lebih dari 1/2t.

2.3.5 Algoritma Euclidean

Bilangan terbesar yang mampu membagi setiap seluruh anggota himpunan bilangan
tersebut dan menghasilkan bilangan bulat. Dua buah bilangan bulat a dan b , dimana
salah satu dari keduanya tidak sama dengan 0, dikatakan relatif prima jika gcd(a ,b) =
1.
Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar
(PBB) dari dua bilangan bulat. Algoritma ini didasarkan pada pernyataan bahwa ada
dua buah bilangan bulat tak negatif yakni m dan n dimana nilai m ≥ n. Adapun tahaptahap pada algoritma Euclidean adalah:
1. Jika n = 0 maka m adalah PBB (m, n); stop. Kalau tidak (yaitu n ≠ 0)
lanjutkan ke langkah nomor 2.
2. Bagilah m dengan n dan misalkan sisanya adalah r .

Universitas Sumatera Utara

20

3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r , lalu ulang
kembali ke langkah nomor 1.

Algoritma Euclidean dapat digunakan untuk mencari dua buah bilangan bulat yang
relatif prima. Contoh:
m = 80, n = 12 ; memenuhi syarat karena m ≥ n
80 = 6.12 + 8
12 = 1.8 + 4
8 = 2.4 + 0, sisa pembagi terakhir adalah 0 maka (80,12) = 4

2.3.6 Bilangan relatif prima

Dua buah bilangan bulat a dan b dikatakan relatif prima jika FPB atau GCD (greatest
common divisor ) dari a dan b bernilai 1.

Contoh : 17 dan 11 relatif prima sebab FPB (17, 11) = 1. Begitu juga 23 dan 7 relatif
prima karena FPB (23, 7) = 1. Tetapi 15 dan 3 tidak relatif prima sebab FPB (15, 3) =
3 ≠ 1.

2.3.7 Invers Modulo

Jika a dan m relatif prima, gcd (a, m) = 1, dan m > 1, maka dapat menemukan invers
(balikan) dari a modulo m. Balikan a modulo m adalah bilangan bulat a-1 , sehingga:
aa-1 ≡ 1 (mod m)
Dari definisi relatif prima, diketahui bahwa gcd (a,m) = 1 sehingga terdapat bilangan
bulat p dan q, sehingga
pa + qm =1
yang mengimplikasikan bahwa pa + qm ≡ 1 (mod m), karena qm ≡ 0 (mod m), maka
pa ≡ 1 (mod m)

Universitas Sumatera Utara

21

Sebagai contoh: karean gcd (4,9) = 1, maka invers modulo dari 4 (mod 9) ada.
9 = 2. 4 + 1
Susunan persamaan diatas menjadi: -2 . 4 + 1 . 9 = 1. Dari persamaan terakhir,
diperoleh -2 merupakan invers modulo dari 4 mod 9. Periksa bahwa :
-2.4 ≡ 1 (mod 9) (9 habis membagi -2. 4-1 = -9).

2.4 Prinsip Kerja Algoritma LUC

2.4.1

Proses pembangkit kunci algoritma LUC:

a. Dibutuhkan nilai p dan q yang diambil secara acak, dimana p ≠ q. Jumlah
p dan q tidak melebihi dua digit bilangan prima. Perkalian nilai p dan q
dibutuhkan untuk mencari nilai modulus N.
1. Algoritma Kunci Publik
a) Pilih dua buah bilangan prima sembarang, misal p dan q dimana p ≠ q.
p = 47
q = 17

b) Hitung nilai n = p x q.
n=pxq
n = 47 x 17
= 799
c) Hitung t = (p-1).(q-1).(p+1).(q+1)
= (47-1).(17-1).(47+1).(17+1)
= (46).(16).(48).(18)
= 635904

Universitas Sumatera Utara

22

d) Menentukan nilai e (bilangan relatif prima). Pilih e secara acak dimana
Z < e < n-1 dan GCD (e,t) = 1
RP (p-1) = RP 46 = { 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43}
RP (q-1) = RP 16 = {3, 5, 7, 11, 13}
RP (p+1) = RP 48 = {3, 5, 7, 11, 13, 17, 19, 29, 31, 37, 41, 43, 47}
RP (q+1) = RP 18 = {3, 5, 7, 11, 13, 17}
Hasil perhitungan bilangan relatif prima diatas terdapat beberapa
bilangan yang sama, yaitu {3, 5, 7, 11, 13, 17, 19, 29, 31, 37, 41, 43,
47}. Maka pilih e = 13, GCD (13, 635904) = 1.
e) Hitung RN = LCM (p-1, q-1, p+1, q+1)
RN = LCM (46, 16, 48, 18)
= 3312
f) Hitung d sehingga mendapatkan hasil e.d mod RN = 1. Pada tabel 1
merupakan tabel perhitungan untuk mencari d.
Tabel 2.1 Perhitungan Untuk Mencari d
D

e.d mod RN = 1
13. d mod 3312 = 1

1

13

2

26

3

39

4

52

..2293

1
d = 2293 = 1

Universitas Sumatera Utara

23

2.4.2

Proses enkripsi

Langkah-langkah dalam mengirimkan pesan dengan menggunakan Algoritma LUC
sebagai berikut:
a. Dalam melakukan proses enkripsi, setiap karakter dari string berupa text
atau plainteks dikonversikan kedalam kode ASCII
Misal : plainteks = A
Kode ASCII = 65.
b. Plainteks A dengan Kode ASCII 65
c. Enkripsi dengan rumus:
V [ 2…e ] = ( m. V [ i – 1] – V [ i – 2] ) mod n
V[0]=2
V [ 1 ] = 65
V [ 2…e ] = ( 65. V [ i – 1] – V [ i – 2] ) mod 799
C = Ciphertext = V[ e ] = V [13] = 608.

2.4.3 Proses Dekripsi

Langkah-langkah dalam melakukan proses dekripsi LUC adalah:
a) Dapatkan hasil cipherteks C = Cipherteks
b) Dekripsi dengan rumus bertingkat:
V [0] = 2
V [1] = C = 608
V [ 2…d ] = ( C. V [ i – 1] – V [ i – 2] ) mod n

Universitas Sumatera Utara

24

V [2…d] = (608. V [ i – 1] – V [ i – 2] ) mod 799
m = V[d]
m = V [2293] = 65 = “A”

2.5 Definisi Kompresi
Kompresi data adalah proses yang dapat mengubah sebuah aliran data masukan
(sumber data atau data asli) ke dalam aliran data yang lain yang memiliki ukuran yang
lebih kecil (Salomon, 2007).
Penggunaan kompresi data dapat mengurangi ukuran dari sebuah file yang
sangat berguna ketika memproses, menyimpan, dan mengirim sebuah file dengan
ukuran yang besar. Jika algoritma kompresi yang digunakan bekerja dengan baik,
seharusnya ada perbedaan yang signifikan antara file asli dan file yang telah
dikompresi. Secara garis besar terdapat 2 buah penggolongan algoritma kompresi,
yaitu:
1. Kompresi Loseless
Kompresi Loseless membangun kembali data asli yang sama persis dengan
data yang di kompresi. Selama melakukan proses kompresi, tidak ada
informasi yang hilang dari data tersebut. Contoh aplikasi lossless compression
: WINRAR dan WINZIP
Contoh format file lossless compression : *.zip, *.rar, document file (*.doc,
*.xls, *.ppt), file executable (*.exe). Gambar dibawah ini sebagai contoh
proses kompresi dan dekompresi Loseless.

Universitas Sumatera Utara

25

Pada gambar 2.6 merupakan visualisasi algoritma kompresi dan dekompresi
loseless.

BBAAB

Algoritma
Kompresi

0010100

0010100

Algoritma
Dekompresi

BBAAB

Gambar 2.6 Proses algoritma kompresi dan dekompresi loseless

Pada contoh diatas, BBAAB dikompresi lalu menghasilkan bit angka 0010100.
Hasil kompresi tersebut kemudian didekompresi kembali untuk menghasilkan data
yang sama dengan data awal yaitu BBAAB. Tidak ada kekurangan data dalam proses
kompresi Loseless tersebut.

2. Kompresi Lossy adalah suatu metode untuk mengkompresi data dan
mendekompresinya dimana data yang dikompresi mungkin berbeda dari data
aslinya, tetapi perbedaan itu cukup dekat. Metode ini paling sering digunakan
untuk kompresi data multimedia (audio file dan gambar).

Gambar 2.7

dibawah ini sebagai contoh proses kompresi dan dekompresi Lossy.
Algoritma Kompresi

2,78128

00001110000010

00001110000010

Algoritma
Dekompresi

2,78

Gambar 2.7 Proses kompresi dan dekompresi lossy

Universitas Sumatera Utara

26

Ada beberapa angka dari bilangan 2,78128 yang tidak begitu mempunyai
peranan yang penting dalam penyimpanan data, sehingga dapat hilang selama proses
kompresi. Data seperti gambar, multimedia, video, dan suara akan lebih mudah
dikompresi dengan menggunakan teknik kompresi lossy. Kompresi lossy tidak
memungkinkan untuk membangun kembali data yang telah dikompresi sama persis
dengan data yang sebelum dikompresi. Tetapi, daya seperti gambar multimedia, video,
dan suara walaupun telah dikompresi dengan menggunakan teknik kompresi lossy
tidak menghambat pengguna untuk melihat ataupun mendengar secara keseluruhan.
Contoh aplikasi lossy compression: aplikasi pengkompres suara (mp3
compressor), gambar (adobe photoshop, paint), video (xilisoft)

Contoh format file lossy compression : MP3, JPEG, MPEG

2.5.1 Algoritma kompresi Goldbach Codes

Algoritma Goldbach Codes ditemukan oleh seorang matematikawan asal Prussia yang
bernama Christian Goldbach. Dimana Algortima Goldbach Codes menyatakan bahwa
setiap bilangan genap > 2 merupakan hasil dari dua buah bilangan prima. Seperti pada
tabel 2.2 merupakan goldbach G0 Code yang berisi Codeword.

Tabel 2.2 Goldbach G0 Code
N

2(n+3)

Primes

Codeword

1

8

3+5

11

2

10

3+7

101

3

12

5+7

011

4

14

3 + 11

1001

5

16

5 + 11

0101

6

18

7 + 11

0011

Universitas Sumatera Utara

27

7

20

7 + 13

00101

8

22

5 + 17

010001

9

24

11 + 13

00011

Tabel diatas merupakan angka-angka yang sudah diubah ke dalam Codeword.
Pilih salah satu angka genap pada table Goldbach G0 Codes, misal 20. Angka 20
merupakan penjumlahan dua bilangan prima, yaitu 7 + 13, yang mana dalam
Codeword adalah 00101. Dimana setiap bit disusun dari kiri ke kanan berdasarkan
urutan yang telah di tetapkan, 13, 11, 7, 5 dan 3. Seperti pada Tabel 3 yang merupakan
contoh angka yang akan dimasukkan kedalam Goldbach G0 Codes.
Contoh:
String = “375” , |string | = 3

∑ ( karakter yang berbeda dalam string) = {375}
∑=3
Setelah mendapatkan ∑ ( karakter yang berbeda dalam string), selanjutnya ∑
dimasukkan ke dalam ASCII seperti tabel 2.3 dibawah ini.

Tabel 2.3 String diubah kedalam ASCII
Char

ASCII Code

ASCII Bin

Bit

Freq

Bit x Freq

3

51

00110011

8

1

8

7

55

00110111

8

1

8

5

53

00110101

8

1

8
Jumlah = 24

Lalu string juga diubah kedalam Goldbach G0 Codes. Pada tabel 2.4 string
diubah kedalam Goldbach Codes.

Universitas Sumatera Utara

28

Tabel 2.4 String diubah kedalam Goldbach G0 Codes.
Char

Freq

N

2(n+3)

Prime

Goldbach

Bit

G0 Codes

Bit

x

Freq

3

1

1

2(1+3)

8

11

2

2

7

1

1

2(1+3)

8

11

2

2

5

1

1

2(1+3)

8

11

2

2

Jumlah = 6
Maka kompresi untuk 375 adalah 111111
Dekompresi 3

7

5

11 11 11

2.5.2 Konsep kompresi data

Untuk proses kompresi menggunakan Goldbach Codes kita merujuk pada Tabel 2.5.1,
Dimana Goldbach Codes, 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

Universitas Sumatera Utara

29

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.
Contoh Padding:
Pada hasil kompresi Goldbach dengan string 375 adalah 111111, terdapat 6 bit
data dalam bilanngan biner. Lalu, dilakukan penambahan bit 0 sebanyak dua
kali 11111100 agar bit data tersebut habis dibagi delapan.

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 adalah 11111100.
Karena terdapat 2 bit penambahan padding maka flag nya adalah bilangan
biner dari 2 dengan panjang 8 bit yaitu 00000001. Sehingga bit-bit datanya
menjadi 1111110000110010 setelah diberikan flagging.

Universitas Sumatera Utara

30

2.5.3. Pengukuran kinerja kompresi data

Pada tahap kompresi data, terdapat beberapa faktor atau variable yang biasa
digunakan untuk mengukur kualitas dari suatu teknik kompresi data, diantaranya
adalah:
a. Ratio of Compression (Rc)
Ratio of Compression merupakan hasil perbandingan antara ukuran fiile yang

telah dikompresi dengan file yang belum di kompresi.

=
=4

b. 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.
x 100%

=

X 100%

= 0,25 %

c. Redundancy (Rd)
Redundancy (Rd) adalah kelebihan yang terdapat di dalam data sebelum

dilakukannya proses kompresi. Dihitung Redundancy data dengan cara
persentasi dari hasil selisih antara ukuran data sebelum dikompresi dengan
data setelah dikompresi.

Universitas Sumatera Utara

31

Rd = 100% - Cr
= 100% - 0,25%
= 99,75 %

d. Space Saving (SS)
Space Saving adalah persentase selisih antara data yang belum dikompresi
dengan besar data yang dikompresi.
SS = 1 - Cr
= 1 – 0,25%
= 0.7

Universitas Sumatera Utara