Prinsip Kerja Algoritma ElGamal Defenisi Kompresi

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