Implementasi Dan Analisis Algoritma Massey-Omura Dan Algoritma Even-Rodeh Dalam Pengamanan Dan Kompresi File Dokumen

(1)

LISTING PROGRAM

1. Class keygen.cs using System;

using System.Numerics;

namespace Program_Skripsi {

/// <summary>

/// Description of keygen. /// </summary>

public class keygen {

private int prima;

public keygen(int p) {

this.prima = p; }

public static BigInteger bilprima(BigInteger random){ int counter=0;

for (int i=2; i<random; i++){ if(random % i == 0) counter++; }

if(counter > 0) return 0; else return random;

}

public static BigInteger gcd(BigInteger m, BigInteger n){ BigInteger r = m % n;

while (r != 0){

return gcd(n,r); }

return n; }

public static int kunci_eA(int prima){ Random rnd = new Random();

int key_eA = rnd.Next(2, prima-1); if (gcd(key_eA,prima-1) == 1)

return key_eA; else

return kunci_eA(prima); }

public static int kunci_dA(int prima, BigInteger eA){ int key_dA = 1;

BigInteger hasil = (key_dA*eA) % (prima-1); while (hasil != 1 && hasil != 0){


(2)

hasil = (key_dA*eA) % (prima-1); }

if (hasil == 0 && key_dA!=eA) return kunci_dA( prima, eA); else

return key_dA; }

public static BigInteger kunci_eB(int prima){ Random rnd2 = new Random();

BigInteger key_eB = rnd2.Next(2, prima-1); if (gcd(key_eB,prima-1)==1 )

return key_eB; else

return kunci_eB(prima); }

public static int kunci_dB(int prima, int eA, int dA, BigInte ger eB){

BigInteger hasil;

int key_dB=1; if (gcd(eB,prima-1)==1 ){

hasil = (key_dB*eB) % (prima-1); while (hasil != 1 && hasil != 0){ key_dB++;

hasil = (key_dB*eB) % (prima-1); }

if (hasil

== 0 && key_dB!=eA && key_dB!=dA && key_dB!=eB)

return kunci_dB(prima, eA, dA, eB); else

return key_dB; }

else

return kunci_dB(prima, eA, dA, eB); }

} }

2. Class MO.cs using System;

using System.Collections.Generic;

using System.Text;

using System.Numerics;

namespace Program_Skripsi {

/// <summary>

/// Description of mo. /// </summary>

public class MO {

private string teks;


(3)

{

this.teks = t; }

public static string enkripsiPlain(string plaintxt, int prima , int eA){

StringBuilder bitsplain = new StringBuilder(); StringBuilder text = new StringBuilder(); BigInteger c1x;

BigInteger

sum, sum2=1, aaa=0, hasil=0, sumx, sumx2=1; foreach (char c in plaintxt){

bitsplain.Append(c); }

BigInteger[] p = new BigInteger[bitsplain.Length]; for (int i=0; i<bitsplain.Length; i++){

p[i] = Convert.ToInt32(bitsplain[i]); c1x = (BigInteger.Pow(p[i],eA)) % (prima); text.Append(c1x);

text.Append(" "); }

return text.ToString(); }

public static string enkripsiC1(string C1,int prima, int eB){ string[] bitsplain = C1.Split(' ');

StringBuilder text = new StringBuilder(); BigInteger c2x;

BigInteger[] c1 = new BigInteger[bitsplain.Length]; BigInteger sum, sum2=1, aaa=0, hasil=0, sumx, sumx2=1; for (int i=0; i<bitsplain.Length-1; i++){

c1[i]=Convert.ToInt32(bitsplain[i]);

c2x = (BigInteger.Pow(c1[i],eB)) % (prima); text.Append(c2x);

text.Append(" "); }

return text.ToString(); }

public static string dekripsiC2(string C2,int prima, int dA){ string[] bitsplain = C2.Split(' ');

StringBuilder text = new StringBuilder(); BigInteger c3x;

BigInteger[] c2 = new BigInteger[bitsplain.Length]; BigInteger sum, sum2=1, aaa=0, hasil=0, sumx, sumx2=1; for (int i=0; i<bitsplain.Length-1; i++){

c2[i]=Convert.ToInt32(bitsplain[i]);

c3x = (BigInteger.Pow(c2[i],dA)) % (prima); text.Append(c3x);

text.Append(" "); }

return text.ToString(); }

public static string dekripsiC3(string C3,int prima, int dB){ string[] bitsplain = C3.Split(' ');


(4)

BigInteger plain;

BigInteger[] c3 = new BigInteger[bitsplain.Length]; StringBuilder sb = new StringBuilder();

BigInteger sum, sum2=1, aaa=0, hasil=0, sumx, sumx2=1; for (int i=0; i<bitsplain.Length-1; i++){

c3[i]=Convert.ToInt32(bitsplain[i]);

plain = (BigInteger.Pow(c3[i],dB)) % (prima); char asli = (char)plain;

sb.Append(asli); }

return sb.ToString(); }

} }

3. Class erCode.cs using System;

using System.Collections.Generic;

using System.Text;

using System.Linq;

namespace Program_Skripsi {

/// <summary>

/// Description of Class1. /// </summary>

public class erCode {

private string kalimat;

public erCode(string s) {

this.kalimat = s; }

static List<char> sortedChar (string kalimat

//charset

List<char> list = new List<char>(); int i=0;

foreach (char elemen in kalimat) { while (!list.Contains(elemen)){ list.Add(elemen);

i++; }

}

//frequency

List<int> frek = new List<int>(); foreach (char elemen in list){ int hitung = 0;

foreach (char e in kalimat){ if (e == elemen)

hitung +=1; }


(5)

frek.Add(hitung); }

//sorting int temp,j; char temp2;

for (int n =0; n < frek.Count; n++) {

temp = frek[n]; temp2 = list[n]; j = n - 1;

while (j >= 0 && frek[j] < temp) {

frek[j + 1] = frek[j]; list[j + 1] = list[j]; j--;

}

frek[j + 1] = temp; list[j + 1] = temp2; }

return list; }

public static string Code(int n){

StringBuilder kode = new StringBuilder(); if (n<4){

string s = Convert.ToString(n,2); for (int i = 0; i<3-s.Length; i++){ kode.Append("0");

}

kode.Append(s); }

else {

kode.Append("0"); while (n>=4){

string st = Convert.ToString(n,2); kode.Insert(0,st);

n = st.Length; } }

return kode.ToString(); }

public static string kompresi (string kalimat){ List<char> srtChar = sortedChar(kalimat);

int m = 0;

string bitflag;

StringBuilder bitkom = new StringBuilder(); foreach (char c in kalimat){

bitkom.Append(Code(srtChar.IndexOf(c))); }

m=0;

while (bitkom.Length % 7 !=0){ bitkom.Append("0");


(6)

}

if (m!=0){

bitflag = Convert.ToString(m,2); while (bitflag.Length % 7 !=0){ bitflag = "0"+bitflag;

}

bitkom.Append(bitflag); }

else

bitkom.Append("0000000");

string sbitkom = Convert.ToString(bitkom);

StringBuilder charkom = new StringBuilder(); int awal = 0;

for (int i=7; i<sbitkom.Length+7; i+=7){ int dec =

Convert.ToInt32(sbitkom.Substring(awal,7), 2); char chr = (char)dec;

charkom.Append(chr); awal = i;

}

charkom.Append("/*/");

for (int j=0; j<srtChar.Count; j++){ charkom.Append(srtChar[j]); }

return charkom.ToString(); }

public static string bitkompresi(string strkom){ string charkompresi =

strkom.Split(new [] {"/*/"}, StringSplitOptions.None)[0]; //convert char to binary

StringBuilder binn = new StringBuilder(); foreach (char c in charkompresi){

string t =

Convert.ToString(System.Convert.ToInt32(c),2); if (t.Length<=7){

for (int i = 0; i<7-t.Length; i++){

binn.Append("0"); }

binn.Append(t); }

else

binn.Append(t); }

string bin = binn.ToString();

//remove bitflag

int bitf = Convert.ToInt32(bin.Substring (bin.Length-7),2);

if(bitf == 0)

bin = bin.Substring(0,bin.Length-7); else


(7)

return bin; }

public static string dekompresi(string strkompresi) string bin = bitkompresi(strkompresi);

string karakter =

strkompresi.Split(new [] {"/*/"}, StringSplitOptions.None)[1];

//ubah dari binari >> karakter string kode = "";

List<string> kodeER = new List<string>(); for (int y=0; y<karakter.Length; y++){ kodeER.Add(Code(y));

}

StringBuilder karasli = new StringBuilder(); foreach (char c in bin){

kode += c;

if (kodeER.Contains(kode)){

karasli.Append(karakter[kodeER.IndexOf(kode)] );

kode = ""; }

}

return karasli.ToString(); }

} }


(8)

CURRICULUM VITAE

--- Data Pribadi

Nama : Novi Nuryanti Azharia Tempat/Tanggal Lahir : Medan / 08 November 1994 Tinggi/Berat Badan : 153 cm / 67 kg

Agama : Islam

Kewarganegaraan : Indonesia

Alamat Sekarang : Jl. Klambir V No.5 Medan Helvetia Alamat Orang Tua : Perum. Batu Batam Indah Blok. F No. 3 Telp/ Hp : 0812 6333 2910

Email : novi.n.azharia@gmail.com

--- Riwayat Pendidikan

[2009 – 2012] : SMA Negeri 4 Batam [2006 – 2009] : SMP Negeri 6 Batam [2000 – 2006] : SD Negeri 007 Batam

--- Keahlian/Kursus

Keahlian Komputer : Pemrograman : PHP, C# Database : MysQL

Perkantoran : Microsoft Office

--- Pengalaman Organisasi

[2009 – 2010] ROHIS SMA Negeri 4 Batam

[2012 – 2013] Anggota Kewirausahaan BKM Al-Khuwarizmi 2012 – 2013

--- Pengalaman Kepanitiaan

[2010] Ketua Buka Bersama dan Sahur on the Road BKM Al-Khuwarizmi [2012] Anggota Acara PORSENI IMILKOM 2012

[2012] Anggota Acara PMB IMILKOM 2012

--- Seminar


(9)

DAFTAR PUSTAKA

Abdullah, A. R. 2016. Perbandingan algoritma even-rodeh dan algoritma variable length binary encoding (VLBE) pada kompresi file teks. Skripsi. Universitas Sumatera Utara

Blahut, R. E. 2014. Cryptography And Secure Communication. Cambridge University Press: New York.

Erdiansyah, U. 2014. Perbandingan algoritma elias delta code dan levenstein untuk kompresi file teks. Skripsi. Universitas Sumatera Utara.

Even, S. & Rodeh, M. 1978. Economical encoding of commas between strings. Communication of the ACM 21(4): 315-317.

Hoffstein, J., Pipher, J. & Silverman, J. H. 2014. An Introduction To Mathematical Cryptography. 2nd Edition. Springer: New York.

Hyka, D. & Benusi, A. 2014. Some cryptographic weakness and the ways to avoid them in ICT services of developing countries. European Journal of Sustainable Development 3(2):73-88.

Kanomori, Y. & Yoo, S. –M. 2009. Quantum Three-Pass Protocol: Key distribution using quantum superposition states. International Journal of Network Security & Its Applications (IJNSA) 1(2): 64-70.

Katz, J. & Lindell, Y. 2015. Introduction To Modern Cryptography. 2nd Edition. Chapman & Hall/CRC: Florida.

McAnlis, C. & Haecky, A. 2016. Understanding Compression. 1st Edition. O’Reilly Media: California.

Pramana, T. S. 2013. Implementasi massey-omura cryptosystem dan lehmann prime generator untuk keamanan email pada mozilla thunderbird. Skripsi. Universitas Sumatera Utara.

Prayudi, S. & Rahim, R. 2015. Analisis Keamanan pada Kombinasi Protokol Secret Sharing dan Three-Pass. Jurnal TIMES 4(2): 1-6


(10)

Reza, M., Budiman, M. A. & Arisandi, D. 2012. Simulasi Pengamanan File Teks Menggunakan Algoritma Massey-Omura. Jurnal Dunia Teknologi Informasi 1(1): 20-27.

Solihin, M. 2013. Perancangan sistem pengamanan dan kompresi data teks dengan fibonacci encoding dan algoritma shannon-fano serta aloritma deflate. Skripsi. Universitas Sumatera Utara.


(11)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Analisis sistem adalah fase awal pembangunan sistem dengan melakukan proses identifikasi komponen-komponen yang dibutuhkan oleh sistem. Analisis sistem dapat dilakukan dengan menentukan komponen yang menjadi input, proses yang dilakukan sistem, dan output dari sistem. Beberapa tahapan dapat dilakukan untuk menganalisis sebuah sistem, yaitu sebagai berikut:

3.1.1 Analisis masalah

Analisis masalah adalah proses identifikasi sebab dan akibat dibangunnya sebuah sistem agar sistem dapat berjalan sesuai dengan tujuan dibuatnya sistem. Permasalahan yang dibahas pada penelitian ini adalah perlunya pengamanan data yang berkaitan dengan aspek kerahasiaan file untuk menghindari bahaya seperti pemanipulasian isi file oleh pihak yang tidak bertanggungjawab. Masalah lain yang akan dibahas adalah diperlukannya suatu metode untuk mengecilkan atau mengkompresi ukuran file terenkripsi dengan bertujuan untuk mempermudah dan mempercepat proses pengiriman file. Selain itu, algoritma pengamanan data yang akan digunakan menganut sistem Three-Pass-Protocol sehingga kebutuhan akan sebuah metode kompresi data menjadi semakin besar. Pengamanan data akan dilakukan dengan menggunakan algoritma Massey-Omura dan kompresi data akan dilakukan dengan menggunakan algoritma Even-Rodeh. File dokumen yang digunakan dalam penelitian ini adalah file berekstensi *.docx.

Analisis masalah dapat digambarkan dengan menggunakan diagram Ishikawa, dimana dengan diagram ini sebab-sebab yang berhubungan dengan suatu permasalahan dapat digambarkan secara detail. Diagram Ishikawa juga sering disebut dengan diagram tulang ikan atau cause-and-effect diagram. Analisis masalah dengan diagram Ishikawa dapat dilihat pada gambar 3.1.


(12)

Gambar 3.1 Diagram Ishikawa Analisis Masalah

Sistem akan melakukan 4 jenis proses yaitu proses enkripsi, dekripsi, kompresi dan dekompresi. Pertukaran pesan akan dilakukan sebanyak 3 kali sesuai dengan konsep Three-Pass-Protocol. Tahap pertama pertukaran pesan dimulai dengan pihak Pengirim (Sender) mengunci pesan dengan kunci enkripsi Pengirim. Kemudian, dilanjutkan dengan mengkompresi pesan yang sudah dienkripsi dan mengirim pesan yang telah dikompresi kepada pihak Penerima (Recepient). Pada tahap kedua pihak Penerima menerima pesan dan mendekomprasi pesan, yang dilanjutkan dengan mengenkripsi pesan dengan kunci enkripsi milik pihak Penerima. Penerima pesan kemudian mengkompresi pesan terenkripsi dan mengirimkan pesan ke pihak Pengirim. Pada tahap ketiga, pihak Pengirim menerima pesan dan mendekompresi pesan tersebut. Selanjutnya, pihak Pengirim mengenkripsi pesan dengan kunci dekripsi milik pihak Pengirim dan megirimkan pesan kembali kepada pihak Penerima. Penerima pesan kemudian mendekompresi pesan yang telah diterima dan mendekripsi pesan dengan kunci dekripsi milik Penerima untuk mendapatkan pesan asli. Alur proses enkripsi-dekripsi dan kompresi-dekompresi sistem dapat dilihat pada Gambar 3.2.


(13)

Gambar 3.2 Alur Proses Enkripsi-Dekripsi dan Kompresi-Dekompresi Sistem 3.1.2 Analisis persyaratan

Analisis persyaratan merupakan tahapan yang dilakukan untuk menentukan kebutuhan dan kondisi yang harus dipenuhi ketika membangun sebuah sistem. Analisis persyaratan terbagi dua, yaitu analisis fungsional dan analisis non-fungsional.

1) Analisis Fungsional

Analisis fungsional dilakukan dengan menerjemahkan kebutuhan sistem menjadi fungsi-fungsi detail mengenai hal-hal yang harus dipenuhi pada sistem yang dirancang. Adapun persyaratan fungsional yang harus dipenuhi sistem yaitu: a. Sistem harus mampu melakukan enkripsi data terhadap file dokumen dengan

ekstensi file *.docx dengan algoritma Massey-Omura.

b. Sistem harus mampu melakukan kompresi data dengan algoritma Even-Rodeh terhadap file dokumen yang telah dienkripsi.

c. Sistem harus mampu melakukan dekripsi data terhadap hasil enkripsi dengan algoritma Massey-Omura menjadi data asli kembali.


(14)

d. Sistem harus mampu melakukan dekompresi data terhadap hasil kompresi dengan algoritma Even-Rodeh menjadi data asli kembali.

2) Analisis Non-Fungsional

Analisis non-fungsional dilakukan dengan menganalisis bagaimana seharusnya sebuah sistem melakukan sesuatu yang akan digunakan untuk menilai kinerja sistem dan menjadi penentu apakah daya guna sistem sudah baik atau belum. Adapun persyaratan non-fungsional yang harus dipenuhi sistem adalah:

a. Performa

Sistem yang dibangun harus dapat melakukan proses dan menunjukkan hasil dari enkripsi-kompresi data dan dekripsi-dekompresi data tersebut.

b. Mudah digunakan (User friendly)

Sistem yang dibangun memiliki tampilan yang user friendly agar mudah dipelajari dan digunakan oleh pengguna.

c. Ekonomis

Sistem harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya tambahan dalam penggunaan perangkat keras maupun perangkat lunak.

d. Dokumentasi

Sistem yang dibangun dapat menyimpan data hasil enkripsi serta dapat menyimpan hasil kompresi.

e. Kontrol

Sistem yang telah dibangun harus tetap dikontrol setelah selesai dirancang agar fungsi dan kinerja sistem dapat terjaga dan memberikan hasil yang sesuai dengan keinginan pengguna.

3.1.3 Pemodelan sistem

Pemodelan sistem merupakan proses untuk membangun atau membentuk model dari suatu sistem. Tujuan dari pemodelan sistem adalah untuk memperoleh gambaran mengenai tugas-tugasatau prosesyang harus dilakukan oleh sistem agar sistem dapat bekerja dengan baik sesuai dengan fungsionalitasnya. Pemodelan sistem pada pada penelitian ini akan dilakukan dengan menggunakan Use Case Diagram, Sequence Diagram, dan Activity Diagram.


(15)

Use case pada dasarnya adalah rangkaian sekelompok proses yang saling terkait dan membentuk sebuah sistem. Sedangkan use case diagram adalah diagram use case yang digunakan untuk menggambarkan secara ringkas mengenai User yang menggunakan sistem dan proses-proses yang dilakukan oleh sistem.

Use case diagram diawali dengan menginisialisasi User yang disebut Aktor yang akan menginisiasi kegiatan sistem. User berperan di dalam sistem Pengirim (Sender) atau Penerima (Recipient). User dapat melakukan proses enkripsi-dekripsi dan kompresi-dekompresi dengan sistem. Sebelum bertukar informasi, kedua pihak akan membangkitkan private key yang akan menjadi kunci enkripsi dan dekripsi berdasarkan public key yaitu bilangan prima yang dibangkitkan oleh pihak Pengirim. Use case diagram sistem dalam penelitian ini dapat dilihat pada Gambar 3.3.

Gambar 3.3 Use Case Diagram Sistem


(16)

Sequence diagram adalah suatu diagram yang menampilkan interaksi-interaksi antar objek di dalam sistem yang disusun berdasarkan sebuah urutan. Sequence Diagram digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai sebuah respon dari suatu kejadian atau event. Sequence Diagram sistem dapat dilihat pada Gambar 3.4.

Gambar 3.4 Sequnce Diagram Sistem

Activity Diagram adalah sebuah diagram yang menggambarkan aliran aktivitas yang terjadi pada setiap use case. Activity Diagram digunakan untuk menampilkan langkah-langkah pengerjaan proses sistem. Terdapat 9 proses yang dilakukan sistem pada penelitian ini yaitu pembangkit bilangan prima, pembangkit kunci pengirim, pembangkit kunci penerima, enkripsi 1, enkripsi 2, dekripsi 1, dekripsi 2, kompresi dan dekompresi teks. Activity Diagram untuk Pembangkit Bilangan Prima dapat dilihat pada Gambar 3.5.


(17)

Gambar 3.5. Activity Diagram Pembangkit Bilangan Prima

Activity Diagram untuk Pembangkit Kunci A dapat dilihat pada Gambar 3.6.


(18)

Activity Diagram untuk Pembangkit Kunci B dapat dilihat pada Gambar 3.7.


(19)

Activity Diagram untuk Enkripsi1 dapat dilihat pada Gambar 3.8.


(20)

Activity Diagram untuk Enkripsi2 dapat dilihat pada Gambar 3.9.


(21)

Activity Diagram untuk Dekripsi1 dapat dilihat pada Gambar 3.10.


(22)

Activity Diagram untuk Dekripsi2 dapat dilihat pada Gambar 3.11.

Gambar 3.11. Activity Diagram Dekripsi2 Activity Diagram untuk Kompresi dapat dilihat pada Gambar 3.12.


(23)

Activity Diagram untuk Dekompresi dapat dilihat pada Gambar 3.13.

Gambar 3.13. Activity Diagram Dekompresi 3.1.4 Pseudocode

1) Pseudocode Pembangkit Bilangan Prima

Berikut adalah pseudocode untuk Pembangkit Bilangan Prima FUNCTION bilprima(random)

counter←0

FOR i←2 TO random-1 DO

IF (random mod i == 0) THEN Counter←counter + 1 end if

END FOR

IF(counter > 0) THEN RETURN 0

ELSE

RETURN random END IF

END FUNCTION

Bilangan prima diperlukan pada enkripsi dan dekripsi algoritma Massey-Omura sebagai modulus. Bilangan prima dibangkitkan dengan memilih sebuah angka random dan melakukan pengecekan untuk mengetahui apakah angka tersebut merupakan bilangan prima atau tidak. Pengecekan dilakukan dengan membagi random dengan angka 2 sampai dengan random-1. Variabel counter digunakan untuk menghitung jumlah random yang habis dibagi 2 hingga random-1. Apabila counter bernilai 0 maka fungsi akan mengembalikan nilai random, sedangkan bila counter lebih besar dari 0 maka fungsi akan mengembalikan nilai 0.


(24)

2) Pseudocode GCD

Berikut adalah pseudocode untuk GCD FUNCTION gcd(m, n)

r←m mod n WHILE (r != 0) RETURN gcd(n,r) END WHILE

RETURN n END FUNCTION

Fungsi GCD digunakan oleh fungsi kunci_e ketika mencari kunci enkripsi, untuk mencari faktor persekutuan terbesar dari nilai e yang dibangkitkan secara acak dan bilangan prima-1.

3) Proses Pembangkit Kunci Enkripsi

Berikut adalah pseudocode untuk proses Pembangkit Kunci Enkripsi FUNCTION kunci_e(prima)

e←random(2, prima - 1)

IF ((gcd(e, prima - 1)) == 1) THEN RETURN e

ELSE

RETURN kunci_e(prima) END IF

END FUNCTION

Bila bilangan prima sudah didapatkan melalui fungsi bilprima, dilakukan random calon kunci enkripsi (e) dengan fungsi kunci_e dan rentang nilai

1 <�< ����� −1. Syarat yang harus dipenuhi agar nilai dapat dipakai sebagai kunci e adalah GCD dari random dan prima-1 adalah 1. Bila GCD bernilai 1 maka e memenuhi syarat sebagai kunci enkripsi.

4) Proses Pembangkit Kunci Dekripsi

Berikut adalah pseudocode untuk proses Pembangkit Kunci Dekripsi FUNCTION kunci_d(prima, e)

d← 1

hasil← (d * e) mod (prima - 1) WHILE (hasil != 1 && hasil != 0) d←d + 1

hasil←(d * e) mod (prima - 1) END WHILE

IF (hasil == 0) THEN RETURN 0

ELSE

RETURN d END IF END FUNCTION


(25)

Fungsi kunci_d digunakan untuk mencari kunci dekripsi (d). Pada fungsi ini dilakukan perhitungan inversi modulo dari e dengan rumus ��� (�������� − 1) = 1 dan menyimpan hasil perhitungan pada variabel hasil. Dilakukan operasi perulangan dengan menambahkan 1 kepada d tiap kali perulangan dan berhenti ketika nilai hasil adalah 1 atau 0. Apabila hasil bernilai 0, maka fungsi akan mengembalikan nilai 0. Sedangkan bila hasil bernilai 0, fungsi akan mengeluarkan d sebagai kunci dekripsi.

5) Pseudocode Proses Enkripsi

Berikut adalah pseudocode untuk proses Enkripsi FUNCTION enkripsi(plaintext, prima, e) FOREACH c IN plaintxt DO

bitsplain←Append(c) END FOR

FOR i←0 TO length(bitsplain) DO p[i]←ConvertToInt(bitsplain[i]) c←pangkat(p[i],e)) mod prima text←Append(c)

text←append(“ ”) END FOR

RETURN text END FUNCTION

Pada proses enkripsi, karakter yang akan diproses ditampung pada sebuah list dengan nama bitsplain. Setiap karakter teks kemudian dikonversi menjadi nilai interger yang merepresentasikan karakter tersebut dan menyimpan nilai ke dalam variabel p. Nilai integer karakter dikomputasikan sesuai dengan rumus enkripsi algoritma Massey-Omura yaitu ��� (����) dan disimpan di dalam variabel c. Hasil enkripsi disimpan pada variabel text. Spasi diberikan diantara hasil komputasi dengan tujuan untuk memisahkan setiap integer karakter. Proses ini akan menghasilkan output Cipherteks dalam bentuk angka.

6) Pseudocode Proses Dekripsi

Berikut adalah pseudocode untuk proses Dekripsi FUNCTION dekripsi(C, prima, d){ bitsplain ← C.Split(' ') FOR i←0 TO length(bitsplain)-1

c[i]←ConvertToInt32(bitsplain[i]) p←(Pangkat(c[i],d)) mod (prima) asli←ConvertToChar(p)


(26)

END FOR RETURN text

Cipherteks yang diproses untuk didekripsi adalah dalam bentuk angka yang dipisahkan oleh spasi, maka dilakukan split dengan tanda pemisah spasi dan menampung cipherteks kedalam list bitsplain. cipherteks diubah menjadi integer dan disimpan pada variabel c. Kemudian karakter cipherteks dikomputasikan sesuai dengan rumus dekripsi algoritma Massey-Omura yaitu� = �� ��� dan menyimpan hasil di dalam variabel p. Bilangan bulat pada p

dikonversi kedalam bentuk karakter dan disimpan pada variabel asli sehingga didapatkan teks awal.

7) Pseudocode Proses Kompresi

Berikut adalah pseudocode untuk proses Kompresi FUNCTION kompresi(kalimat)

m←0

srtChar← sortedChar(kalimat) FOREACH c IN kalimat DO bitkom←Append(Code(m)) END FOR

WHILE (length(bitkom) mod 7 != 0) bitkom←Append("0")

m←m + 1 END WHILE IF (m!=0)

bitflag←ConvertToString(m,2) WHILE (length(bitflag) mod 7 !=0) bitflag←"0" + bitflag

end while

bitkom←Append(bitflag) ELSE

bitkom←Append("0000000") END IF

sbitkom←ConvertToString(bitkom) awal←0

FOR i←7 TO length(sbitkom)

dec←ConvertToInt(sbitkom.Substring(awal,7), 2) chr←ConvertToChar(dec)

charkom←Append(chr) awal←i

i←i + 7 END FOR

charkom.Append("/*/")

FOR j← 0 TO length(srtChar) charkom←Append(srtChar[j]) END FOR

RETURN charkom END FUNCTION


(27)

Proses kompresi dimulai dengan mengurutkan karakter berdasarkan frekuensi kemunculan karakter. Hasil pengurutan karakter disimpan di dalam variabel

srtChar. Setelah dilakukan pengurutan, dibentuk sebuah string yang berisi bit kode Even-Rodeh yang merepresentasikan karakter teks dan menyimpannya ke dalam variabel bitkom. Dilakukan perhitungan mod panjang bit kompresi dengan 7. Ketika hasil sisa bagi tidak sama dengan 0, tambahkan (append) padding “0” hingga hasil sisa bagi menjadi 0 dan meyimpan jumlah dari padding yang ditambah dalam variabel m untuk digunakan ketika menuliskan flag bits. Selanjutnya, nilai pada variabel m dikonversi ke dalam bentuk binari yang disimpan ke dalam variabel bitflag, kemudian ditambahkan angka 0 didepannya sehingga jumlah bit menjadi tujuh digit. Apabila tidak ada padding yang ditambahkan, maka flag bits yang dituliskan hanya angka 0 berjumlah tujuh digit. Flag bits ditulis setelah padding agar sistem dapat mengetahui berapa banyak padding yang ditambahkan pada string bit kompresi.

Bit hasil kompresi ditampung pada variabel sbitkom untuk diubah menjadi ke dalam bentuk karakter. Tahap perubahan bit kompresi menjadi karakter kompresi dimulai dengan mengambil bagian sbitkom mulai dari indeks awal

yaitu indeks-0 sebanyak 7 digit dan mengubahnya ke dalam bentuk integer. Hasil konversi disimpan dalam variabel dec. Nilai integer pada variabel dec

dikonversi kedalam bentuk char dan ditampung dalam variabel chr. Karakter pada variabel chr ditambahkan kedalam List charkom dan didapatkan karakter hasil kompresi. Simbol “/*/” ditambahkan pada charkom sebagai pemisah karakter kompresi dengan karakter asli. Dilakukan operasi perulangan untuk menuliskan karakter asli ke dalam charkom.

8) Pseudocode Proses Dekompresi

Berikut adalah pseudocode untuk proses Dekompresi FUNCTION dekompresi(strkom)

charkompresi←strkom.Split(new[] {"/*/"}, [0]) FOREACH c IN charkompresi DO

t←ConvertToString(ConvertToInt(c),2)) IF (length(t) <= 7)

FOR i←0 TO 7-length(t)

bin← Append("0") END FOR


(28)

bin←Append(t) ELSE

bin←Append(t) END IF

END FOR

bitf←ConvertToInt(bin.Substring(length(bin)-7),2) IF(bitf == 0)

bin←bin.Substring(0,length(bin)-7) ELSE

bin←bin.Substring(0,length(bin)-(7+bitf)) END IF

FOR y←0 TO length(karakter) kodeER←Add(Code(y)) END FOR

karakter←strkom.Split(new[] {"/*/"}, [1]) FOREACH c IN bin

kode←c

IF (kodeER.Contains(kode))

karasli←karakter[kodeER.IndexOf(kode)] kode←""

END IF END FOR

RETURN karasli END FUNCTION

Proses dekompresi dimulai dengan menampung karakter kompresi ke dalam variabel charkompresi dimana indeks karakter yang diambil dimulai dari 0 hingga simbol “/*/”. Setiap karakter kompresi diubah menjadi binari dan menyimpan nilai pada variabel t. Ditambahkan angka 0 didepan bit jika digit kurang dari tujuh dan menyimpan hasil pada variabel bin. Kemudian dilakukan penghapusan padding dan flag bits dari string bit kompresi dimulai dengan mengambil tujuh bit terakhir dan mengkonversi nilai kedalam bentuk integer. Nilai disimpan pada variabel bitf. Dilakukan pengecekan dengan kondisi bitf

bernilai 0 atau tidak. Bila bitf bernilai 0, maka dilakukan pemotongan indeks sehingga nilai yang diambil untuk variabel bin dimulai dari indeks 0 hingga indeks akhir kurang 7. Jika bitf tidak bernilai 0, maka indeks yang diambil untuk bin dimulai dari 0 hingga indeks akhir – (7 + bitf). Kode Even-Rodeh dibangkitkan sesuai dengan jumlah karakter asli dengan memanggil fungsi Code

dan menyimpannya pada list kodeER. Karakter asli yang diambil setelah simbol “/*/” ditampung dalam variabel karakter. Kemudian dilakukan pengecekan untuk melihat apakah bit terdapat pada deretan kode Even-Rodeh. Bit ditampung pada variabel kode. Indeks ke-0 ditambahkan ke kode dan dilakukan pengecekan apakah kode terdapat pada list kodeER. Bila tidak, maka indeks


(29)

ke-1 ditambahkan ke kode dan dilakukan pengecekan ulang. Penambahan akan terus dilanjutkan hingga kode terdapat pada list kodeER dan merepresentasikan sebuah karakter asli. Karakter asli yang didapatkan ditampung pada variabel

karasli.

9) Pseudocode Kode Even-Rodeh

Berikut adalah pseudocode untuk proses Pembangkit Kode Even-Rodeh FUNCTION Code(n)

IF (n<4){

ns ← ConvertToString(n, 2) FOR i←0 TO 3- length(ns) kode ← Append("0") END FOR

kode ← Append(ns) ELSE

kode←Append("0") WHILE (n >= 4)

ns←ConvertToString(n,2) kode←Insert(0,ns)

n←length(ns) END WHILE END IF

RETURN kode END FUNCTION

Pembangkit kode Even-Rodeh digunakan oleh proses Encoding dan Decoding untuk membangkitkan kode. Keluaran dari proses ini adalah kode Even-Rodeh sesuai dengan nilai parameter masukan (n). Pembangkitan kode dimulai dengan mengecek apakah nilai n lebih kecil dari 4 atau tidak. Bila n lebih kecil dari 4, maka ubah n ke dalam bentuk binari dan simpan sebagai ns, kemudian angka 0 ditambahkan hingga jumlah bit kode menjadi 3 dan append (tambahkan) ns. Bila n lebih besar sama dengan 4, append “0” pada kode dan lakukan operasi perulangan selama n lebih besar sama dengan 4. Nilai n dikonversi menjadi biner dan disimpan pada variabel ns, kemudian nilai ns ditambahkan ke kode pada indeks ke-0. Jadikan panjang bit ns sebagai nilai dari n.

3.1.5 Flowchart 1) Flowchart Sistem

Sistem yang dibangun berfungsi untuk melakukan proses enkripsi-dekripsi pesan dengan menggunakan algoritma Massey-Omura dan proses kompresi-dekompresi


(30)

terhadap file yang telah dienkripsi dengan algoritma Even-Rodeh. Pertukaran pesan akan dilakukan dalam tiga tahap dalam bentuk file kompresi. Proses kompresi akan dilakukan setiap proses enkripsi atau dekripsi selesai dilakukan kecuali pada proses Dekripsi2. Dan proses dekompresi dilakukan sebelum memulai proses enkripsi atau dekripsi kecuali pada Enkripsi1. Flowchart sistem dapat dilihat pada Gambar 3.14.


(31)

2) Flowchart Pembangkit Kunci

Pembangkit kunci dimulai setelah membangkitkan bilangan prima dan melakukan random kunci enkripsi eA atau eB dengan syarat 1 <��|��< ����� −1. Kemudian dilakukan pengecekan nilai GCD(��|��,����� −1). Bila GCD bernilai 1 maka eA atau eB memenuhi syarat untuk dipakai sebagai kunci enkripsi. Setelah mendapatkan kunci enkripsi, dilakukan pencarian kunci dekripsi dA atau dB dengan mencari invers eA atau eB mod p-1 melalui perhitungan ��� (�������� −1) = 1. Flowchart Pembangkit kunci dapat dilihat pada Gambar 3.15.


(32)

3) Flowchart Enkripsi1 dan Enkripsi2

Dapat dilihat pada Gambar 3.16, Enkripsi1 dimulai dengan menginput teks asli, bilangan prima dan kunci enkripsi Sender (eA). Teks asli kemudian dikonversi menjadi integer berdasarkan Tabel ASCII. Setelah dikonversi, dilakukan perhitungan C1 dan didapatkan hasil Cipherteks1. Proses Enkripsi1 dilakukan oleh Sender.

Enkripsi2 dilakukan oleh Recipient dan dimulai dengan menginput Cipherteks1, bilangan prima, dan kunci enkripsi Recipient (eB). Kemudian dilakukan proses perhitungan C2 dan didapatkan Cipherteks2.

Gambar 3.16. Flowchart Enkripsi1 dan Enkripsi2 4) Flowchart Dekripsi1 dan Dekripsi2

Seperti pada Gambar 3.17. Dekripsi1 dimulai dengan menginput Cipherteks2, bilangan prima dan kunci dekripsi dA. Dilakukan perhitungan C3 dan menghasilkan Cipherteks3. Proses Dekripsi1 dilakukan oleh Sender.

Dekripsi2 dilakukan oleh Recipient yang dimulai dengan menginput Cipherteks3, bilangan prima, dan kunci dekripisi Recipient. Dilakukan perhitungan P


(33)

sehingga didapatkan integer dari plainteks. Kemudian Integer plainteks dikonversi menjadi karakter kembali.

Gambar 3.17. Flowchart Dekripsi1 dan Dekripsi2 5) Flowchart Even-Rodeh Code

Parameter masukan yang akan diproses oleh pembangkit kode Even-Rodeh adalah n yaitu indeks karakter yang telah diurutkan berdasarkan frekuensi kemunculan karakter. Fungsi ini mengahasilkan output kode Even-Rodeh sesuai dengan nilai n. Proses pembangkit kode dilakukan dengan mengecek nilai n. Terdapat dua kondisi pengecekan yaitu nilai n lebih besar dari 4 atau tidak. Flowchart Even-Rodeh Code dapat dilihat pada Gambar 3.18.


(34)

Gambar 3.18. Flowchart Even-Rodeh Code

Ya

Ya Tidak

Tidak

Ya Tidak Kode = “0”

Mulai

Input n

Output kode

Selesai n < 4

kode = ns + kode

n = ns.length n ≥ 4 kode = “”

ns = ConvertToBin(n)

ns = ConvertToBin(n)

i < 3 - ns.Length

kode = kode + “0”

kode = kode + ns i = 0


(35)

3.2 Perancangan Sistem

Berdasarkan analisis yang dilakukan, diperoleh gambaran yang digunakan untuk melakukan preancangan antarmuka pengguna yang sesuai dan dapat mendukung fungsionalitas sistem. Terdapat 5 buah Form yang akan ditampilkan pada sistem yaitu Form Beranda, Form Pembangkit Kunci, Form Pengirim, Form Penerima, Form Bantuan Form Tentang.

3.2.1 Halaman Beranda

Halaman Beranda akan terbuka ketika sistem pertama kali dijalankan dan ketika user memilih Tab Beranda.

Gambar 3.19. Perancangan Form Beranda

Komponen yang digunakan untuk perancangan interface Form Beranda berdasarkan Gambar 3.19. adalah sebagai berikut:

1) Tab Beranda berfungsi untuk menampilkan tampilan Beranda dari sistem.

2) Tab Pembangkit Kunci berfungsi untuk menampilkan halaman Pembangkit Kunci sistem.

3) Tab Pengirim berfungsi untuk menampilkan halaman Pengirim. 4) Tab Penerima berfunngsi untuk menampilkan halaman Penerima.

5) Tab Bantuan berfungsi untuk menampilkan halaman Bantuan yang berisi penjelasan cara pemakaian sistem.

6) Tab Tentang berfungsi untuk menampilkan halaman Tentang. 7) ListBox berisi keterangan dari sistem.

8) PictureBox berisi gambar logo.

1 2 3 4 5 6

7 8

7


(36)

3.2.2 Halaman Pembangkit kunci

Halaman Pembangkit Kunci berisi interface yang digunakan User untuk membangkitkan kunci sebelum melakukan proses enkripsi dan dekripsi.

Gambar 3.20. Perancangan Form Pembangkit Kunci

Komponen yang digunakan untuk perancangan interface Form Pembangkit Kunci berdasarkan Gambar 3.20. adalah sebagai berikut:

1) Tab Beranda berfungsi untuk menampilkan tampilan Beranda dari sistem.

2) Tab Pembangkit Kunci berfungsi untuk menampilkan halaman Pembangkit Kunci sistem.

3) Tab Penerima berfungsi untuk menampilkan halaman Penerima. 4) Tab Pengirim berfunngsi untuk menampilkan halaman Pengirim.

5) Tab Bantuan berfungsi untuk menampilkan halaman Bantuan yang berisi penjelasan cara pemakaian sistem.

6) Tab Tentang berfungsi untuk menampilkan halaman Tentang.

7) GroupBox (Bilangan Prima) berisi komponen-komponen yang digunakan untuk membangkitkan bilangan prima.

8) ComboBox untuk memilih jumlah digit bilangan prima yang akan dibangkitkan. 9) TextBox untuk menampilkan bilangan prima

10) Button (Generate Prima) untuk membangkitkan bilangan prima

11) GroupBox berisi komponen-komponen yang digunakan oleh User untuk membangkitkan kunci enkripsi dan dekripsi.

12) TextBox untuk menampilkan nilai kunci enkripsi 13) TextBox untuk menampilkan nilai kunci dekripsi

Teks Teks Teks Teks Teks Teks

1 2 3 4 5 6

7 8

9 10

11 12

13 14 15

11 12

13 14 15 16 17


(37)

14) Button (Generate Kunci) untuk membangkitkan kunci enkripsi dan dekripsi. 15) Button (Simpan) untuk menyimpan kunci enkripsi dan dekripsi.

16) TextBox untuk menampilkan bilangan prima 17) Button (Browse) untuk memilih file cipherteks

3.2.3 Halaman Pengirim

Halaman Pengirim berisi komponen-komponen yang akan digunakan Pengirim untuk melakukan proses enkripsi dan dekripsi.

Gambar 3.21. Perancangan Form Pengirim

Komponen yang digunakan untuk perancangan interface Form Enkripsi berdasarkan Gambar 3.21. adalah sebagai berikut:

1) Tab Beranda berfungsi untuk menampilkan tampilan Beranda dari sistem.

2) Tab Pembangkit Kunci berfungsi untuk menampilkan halaman Pembangkit Kunci.

3) Tab Pengirim berfungsi untuk menampilkan halaman Pengirim. 4) Tab Penerima berfunngsi untuk menampilkan halaman Penerima.

5) Tab Bantuan berfungsi untuk menampilkan halaman Bantuan yang berisi penjelasan cara pemakaian sistem.

6) Tab Tentang berfungsi untuk menampilkan halaman Tentang.

Teks

Teks Teks

Teks Teks Teks Teks Teks Teks

Teks Teks

Teks Teks Teks Teks Teks Teks Teks Teks

Teks Teks

1 2 3 4 5 6

7 8

9

9

32

10

11 11

12 13

14 15 16

14 15 16

17 18

19 20

23

21 22

24 25 23 24

25 31 26 27 28 29 30 26 27 28 29 30 34 33

Teks Teks

10

19 20

21 22


(38)

7) GroupBox (Enkripsi Massey-Omura) berisi komponen-komponen yang digunakan oleh Pengirim untuk mengenkripsi dan mengkompresi pesan.

8) GroupBox (Dekripsi Massey-Omura) berisi komponen-komponen yang digunakan oleh Pengirim untuk mendekripsi, mengkompresi, dan mendekompresi pesan.

9) GroupBox (Kunci Enkripsi/Kunci Dekripsi) berisi komponen-komponen untuk menampilkan kunci enkripsi atau dekripsi yang akan dipakai User.

10) GroupBox (Enkripsi Teks/Dekripsi Teks) berisi komponen-komponen untuk melakukan proses enkripsi atau dekripsi.

11) GroupBox (Kompresi Even-Rodeh) berisi komponen-komponen untuk melakukan proses kompresi.

12) GroupBox (Informasi) berisi komponen-komponen untuk menampilkan waktu proses dan Rc, Cr, dan Rd.

13) groupBox (Dekompresi Even-Rodeh) berisi komponen-komponen untuk melakukan proses dekompresi.

14) TextBox berfungsi untuk menampilkan bilangan prima.

15) TextBox berfungsi untuk menampilkan kunci enkripsi atau dekripsi. 16) Button (Browse) berfungsi untuk memilih file kunci.

17) TextBox berfungsi untuk menampilkan path file yang akan dienkripsi atau didekripsi.

18) Button (Browse) berfungsi untuk memilih file dokumen.

19) RichTextBox berfungsi untuk menampilkan teks yang akan dienkripsi atau didekripsi.

20) RichTextBox berfungsi untuk menampilkan teks yang telah dienkripsi atau didekripsi.

21) Button (Enkripsi/Dekripsi) berfungsi untuk mengenkripsi atau mendekripsi teks. 22) Button (Simpan) berfungsi untuk menyimpan file hasil enkripsi atau dekripsi. 23) TextBox berfungsi untuk menampilkan path file enkripsi yang akan dikompresi. 24) Button (Browse) berfungsi untuk menampilkan direktori penyimpanan file

enkripsi atau dekripsi.

25) Button (Kompresi) berfungsi untuk mengkompresi file.

26) TextBox berfungsi untuk menampilkan waktu enkripsi atau dekripsi. 27) TextBox berfungsi untuk nenampilkan waktu kompresi.


(39)

28) TextBox berfungsi untuk menampilkan Ratio of Compression. 29) TextBox berfungsi untuk menampilkan Compression Ratio. 30) TextBox berfungsi untuk menampilkan Redudancy.

31) TeksBox berfungsi untuk menampilkan waktu dekompresi.

32) TextBox berfungsi untuk menampilkan path file yang akan dikompresi 33) Button (Browse) berfungsi untuk menampilkan direktori file kompresi. 34) Button dekompresi untuk mendekompresi file.

3.2.4 Halaman Penerima

Halaman Penerima berisi komponen-komponen yang digunakan oleh Penerima untuk melakukan proses enkripsi dan dekripsi.

Gambar 3.22. Perancangan Form Penerima

Komponen yang digunakan untuk perancangan interface Form Penerima berdasarkan Gambar 3.22. adalah sebagai berikut:

1) Tab Beranda berfungsi untuk menampilkan tampilan Beranda dari sistem.

2) Tab Pembangkit Kunci berfungsi untuk menampilkan halaman Pembangkit Kunci.

3) Tab Pengirim berfungsi untuk menampilkan halaman Pengirim. 4) Tab Penerima berfunngsi untuk menampilkan halaman Penerima.

Teks Teks

Teks Teks Teks Teks Teks Teks Teks Teks Teks Teks

Teks Teks

Teks

1 2 3 4 5 6

7 8

9 9

10 10

12

13

13

14 14

16 15 16 15

17 18 19 17 18 19

24 25 26 27 27 28 28 29 30 31 32

Teks Teks

11

20 21

22 23

Teks Teks

11

20 21


(40)

5) Tab Bantuan berfungsi untuk menampilkan halaman Bantuan yang berisi penjelasan cara pemakaian sistem.

6) Tab Tentang berfungsi untuk menampilkan halaman Tentang.

7) GroupBox (Enkripsi Massey-Omura) berisi komponen-komponen yang digunakan oleh Penerima untuk mengenkripsi, mengkompresi, dan mendekompresi pesan.

8) GroupBox (Dekripsi Massey-Omura) berisi komponen-komponen yang digunakan oleh Penerima untuk mendekripsi dan mendekompresi pesan.

9) GroupBox (Dekompresi Even-Rodeh) berisi komponen untuk proses dekompresi. 10) GroupBox (Kunci Enkripsi/Dekripsi) berisi komponen-komponen untuk

menampilkan kunci enkripsi atau dekripsi yang akan digunakan User.

11) GroupBox (Dekripsi Teks) berisi komponen-komponen untuk proses enkripsi atau dekripsi teks.

12) GroupBox (Kompresi Even-Rodeh) berisi komponen untuk melakukan kompresi. 13) GroupBox (Informasi) berisi komponen-komponen untuk menampilkan waktu

proses dan Rc, Cr, dan Rd.

14) TextBox berfungsi untuk menampilkan path file yang akan didekompresi 15) Button (Browse) berfungsi untuk memilih file dokumen enkripsi atau dekripsi. 16) Button (Dekompresi) berfungsi untuk mendekompresi teks.

17) TextBox berfungsi untuk menampilkan bilangan prima.

18) TextBox berfungsi untuk menampilkan kunci enkripsi atau dekripsi. 19) Button (Browse) berfungsi untuk memilih file kunci.

20) RichTextBox berfungsi untuk menampilkan teks yang akan dienkripsi atau didekripsi.

21) RichTextBox berfungsi untuk menampilkan teks yang telah dienrkripsi atau didekripsi.

22) Button (Enkripsi/Dekripsi) berfungsi untuk mengenkripsi atau mendekripsi teks. 23) Button (Simpan) berfungsi untuk menyimpan teks hasil enkripsi atau dekripsi. 24) TextBox berfungsi untuk menampilkan path file enkripsi atau dekripsi.

25) Button (Browse) untuk membuka membuka direktori penyimpanan file enkripsi atau dekripsi dan memilih file.

26) Button (Kompresi) untuk mengkompresi teks.


(41)

28) TextBox berfungsi untuk nenampilkan waktu kompresi. 29) TeksBox berfungsi untuk menampilkan waktu dekompresi. 30) TextBox berfungsi untuk menampilkan Ratio of Compression. 31) TextBox berfungsi untuk menampilkan Compression Ratio. 32) TextBox berfungsi untuk menampilkan Redudancy.

3.2.5 Halaman Bantuan

Halaman Bantuan berisi petunjuk langkah-langkah penggunaan sistem.

Gambar 3.23. Perancangan Form Bantuan

Komponen yang digunakan untuk perancangan interface Form Bantuan berdasarkan Gambar 3.23. adalah sebagai berikut:

1) Tab Beranda berfungsi untuk menampilkan tampilan Beranda dari sistem.

2) Tab Pembangkit Kunci berfungsi untuk menampilkan halaman Pembangkit Kunci sistem.

3) Tab Pengirim berfungsi untuk menampilkan halaman Pengirim. 4) Tab Penerima berfunngsi untuk menampilkan halaman Penerima.

5) Tab Bantuan berfungsi untuk menampilkan halaman Bantuan yang berisi penjelasan cara pemakaian sistem.

6) Tab Tentang berfungsi untuk menampilkan halaman Tentang.

7) ComboBox Pembangkit Kunci Pengirim berisi petunjuk langkah-langkah pembangkit kunci oleh Pengirim.

8) ComboBox Enkripsi Pengirim berisi penjelasan langkah enkripsi oleh Pengirim. 9) ComboBox Dekripsi Pengirim berisi penjelasan langkah dekripsi oleh Pengirim.

1 2 3 4 5 6

12 11 7

8

9


(42)

10) ComboBox Pembangkit Kunci Penerima berisi petunjuk langkah-langkah pembangkit kunci oleh Penerima.

11) ComboBox Enkripsi Penerima berisi penjelasan langkah enkripsi oleh Penerima. 12) ComboBox Dekripsi Penerima berisi penjelasan langkah dekripsi oleh Penerima.

3.2.6 Halaman Tentang

Halaman Tentang berisi mengenai judul dari sistem yang dibuat beserta informasi programmer.

Gambar 3.24. Perancangan Form Tentang

Komponen yang digunakan untuk perancangan interface Form Tentang berdasarkan Gambar 3.24. adalah sebagai berikut:

1) Tab Beranda berfungsi untuk menampilkan tampilan Beranda dari sistem.

2) Tab Pembangkit Kunci berfungsi untuk menampilkan halaman Pembangkit Kunci sistem.

3) Tab Pengirim berfungsi untuk menampilkan halaman Pengirim. 4) Tab Penerima berfunngsi untuk menampilkan halaman Penerima.

5) Tab Bantuan berfungsi untuk menampilkan halaman Bantuan yang berisi penjelasan cara pemakaian sistem.

6) Tab Tentang berfungsi untuk menampilkan halaman Tentang. 7) ListBox berisi keterangan dari sistem.

1 2 3 4 5 6

7

7

7


(43)

3.3 Tahapan Sistem

3.3.1 Tahapan algoritma kriptografi Massey-Omura

Sebuah pesan akan dikirimkan oleh Sender kepada Recipient dalam bentuk file dokumen. Sebelum pesan dikirimkan, dilakukan proses pengamanan terhadap isi file dokumen. File dokumen memiliki isi string “ASIMETRIS”. Langkah-langkah penyandian pesan dengan menggunakan algoritma Massey-Omura adalah sbb:

1) Proses Enkripsi1 algoritma Massey-Omura

a. Dibangkitkan sebuah bilangan prima > 128. Bilangan prima yang digunakan adalah 263.

b. Sender membangkitkan sebuah bilangan untuk digunakan sebagai kunci enkripsi dengan syarat:

1) 1 <�� <����� −1.

2) GCD(��,����� −1) = 1 atau eA dan prima-1 adalah coprime.

Sender memilih 145 sebagai eA dan menghitung GCD(��,����� −1) dengan melakukan perhitungan sebagai berikut:

145 mod 262 = 145 262 mod 145 = 117 145 mod 117 = 28 117 mod 28 = 5 28 mod 5 = 3 5 mod 3 = 2 3 mod 2 = 1

Maka, GCD(��,����� −1) = 1 dan 145 dapat digunakan sebagai kunci eA. c. Sender membangkitkan kunci dekripsi dengan menghitung invers eA dan

prima-1 dengan rumus ����� (�������� −1) = 1. Tabel 3.1. Perhitungan kunci dA �� ������� 145 ( (����������� − 262) = 11) = 1

25 219

73 105

⋮ ⋮

103 1


(44)

d. Ubah pesan yang akan dikirim menjadi integer berdasarkan tabel ASCII. Plainteks = “ASIMETRIS”

M = 65 83 73 77 69 84 82 73 83

e. Enkripsi1 dilakukan oleh Sender dengan menghitung �1 = ��� ����. Prima = 263, eA = 145

C1 = 65145 mod 263 = 239 C1 = 83145 mod 263 = 151 C1 = 73145 mod 263 = 5 C1 = 77145 mod 263 = 215 C1 = 69145 mod 263 = 25 C1 = 84145 mod 263 = 188 C1 = 82145 mod 263 = 97 C1 = 73145 mod 263 = 5 C1 = 83145 mod 263 = 151

Hasil dari Enkripsi1 adalah Cipherteks1 “239 151 5 215 25 188 97 5 151”. Sender kemudian mengirim C1 kepada Recipient.

2) Proses Enkripsi2 (Recipient) algoritma Massey-Omura

a. Recipient membangkitkan sebuah bilangan untuk digunakan sebagai kunci enkripsi dengan syarat:

1) 1 <��< ����� −1

2) GCD(��,����� −1) = 1 atau eB dan prima-1 adalah coprime.

Recipient memilih 125 sebagai eB dan menghitung GCD(��,����� −1) dengan melakukan perhitungan sebagai berikut:

125 mod 262 = 145 262 mod 145 = 12 145 mod 12 = 1

Maka, GCD(��,����� −1) = 1 dan 125 dapat digunakan sebagai kunci eB. b. Recipient membangkitkan kunci dekripsi dengan menghitung invers eB dan

prima-1 dengan rumus ����� (�������� −1) = 1 Tabel 3.2. Perhitungan kunci dB �� ������� 125 ( (����������� − 262) = 11) = 1


(45)

25 243

73 217

⋮ ⋮

109 1

Karena 109 � 125 (��� 262−1) = 1, maka 109 digunakan sebagai dB. c. Enkripsi2 dilakukan oleh Recipient dengan menghitung �2 = �1�� ����.

Prima = 263, eB = 125 C2 = 239125 mod 263 = 7 C2 = 151125 mod 263 = 69 C2 = 5125 mod 263 = 56 C2 = 215125 mod 263 = 259 C2 = 25125 mod 263 = 243 C2 = 188125 mod 263 = 175 C2 = 97125 mod 263 = 252 C2 = 5125 mod 263 = 56 C2 = 151125 mod 263 = 69

Hasil dari Enkripsi2 adalah Cipherteks2 “7 69 56 259 243 175 252 56 69”. Recipient kemudian mengirim C2 kepada Sender.

3) Proses Dekripsi1 (Sender) algoritma Massey-Omura

Dekripsi1 dilakukan oleh Sender dengan menghitung �3 = �2�� ����. Prima = 263, dA = 103

C3 = 7103 mod 263 = 191 C3 = 69103 mod 263 = 178 C3 = 56103 mod 263 = 251 C3 = 259103 mod 263 = 38 C3 = 243103 mod 263 = 144 C3 = 175103 mod 263 = 29 C3 = 252103 mod 263 = 174 C3 = 56103 mod 263 = 251 C3 = 69103 mod 263 = 178

Hasil dari Dekripsi1 adalah C3 = 191 178 251 38 144 29 174 251 178. Sender kemudian mengirim C3 kepada Recipient.


(46)

4) Proses Dekripsi1 (Recipient) algoritma Massey-Omura

a. Dekripsi2 dilakukan oleh Recipient dengan menghitung � = �3�� ����. Prima = 263, dB = 109

M = 191109 mod 263 = 65 M = 178109 mod 263 = 83 M = 251109 mod 263 = 73 M = 38109 mod 263 = 77 M = 144109 mod 263 = 69 M = 29109 mod 263 = 84 M = 174109 mod 263 = 82 M = 251109 mod 263 = 73 M = 178109 mod 263 = 83

Hasil dari Dekripsi2 adalah M = 65 83 73 77 69 84 82 73 83.

b. M diubah kembali menjadi karakter berdasarkan tabel ASCII dan didapatkan Plainteks = “ASIMETRIS”.

3.3.2 Tahapan algoritma Even-Rodeh 1) Proses Kompresi algoritma Even-Rodeh

Berikut ini adalah contoh proses kompresi file teks dengan algoritma Even-Rodeh dengan string “FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI”. Lakukan pengurutan karakter berdasarkan frekuensi kemunculan karakter. Pengurutan karakter dapat dilihat pada Tabel 3.3.

Tabel 3.3. Bit Karakter sebelum Kompresi

n char Frekuensi ASCII code ASCII (Binari) Bit Bit x Frek

1 Sp 5 32 00100000 8 40

2 A 4 65 01000001 8 32

3 I 4 73 01001001 8 32

4 O 4 79 01001111 8 32

5 K 3 75 01001011 8 24

6 U 3 85 01010101 8 24

7 L 3 76 01001100 8 24

8 T 3 84 01010100 8 24

9 M 3 77 01001101 8 24

10 N 3 78 01001110 8 24

11 F 2 70 01000110 8 16


(47)

13 E 2 69 01000101 8 16

14 R 2 82 01010010 8 16

15 P 1 80 01010000 8 8

16 D 1 68 01000100 8 8

17 G 1 71 01000111 8 8

Total Bit 368

Kemudian, ganti bit karakter dengan bit kode Even-Rodeh dan didapatkan bit karakter yang sudah dikompresi sebagai berikut:

Tabel 3.4. Bit Karakter setelah Kompresi n char Frekuensi Kode

Even-Rodeh Bit Bit x Frek

1 Sp 5 000 3 15

2 A 4 001 3 12

3 I 4 010 3 12

4 O 4 011 3 12

5 K 3 1000 4 12

6 U 3 1010 4 12

7 L 3 1110 4 12

8 T 3 10010000 8 24

9 M 3 10010010 8 24

10 N 3 10010100 8 24

11 F 2 10010110 8 16

12 S 2 10011000 8 16

13 E 2 10011010 8 16

14 R 2 10011100 8 16

15 P 1 10011110 8 8

16 D 1 101100000 9 9

17 G 1 101100010 9 9

Total Bit 249

Dari Tabel 3.4 dapat dibentuk string bit kompresi dari string asli “FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI” dan didapatkan string bit dengan uraian sebagai berikut:

10010110 001 1000 1010 1110 10010000 001 10011000 000 010 1110 F A K U L T A S Sp I L 10010010 1010 000 1000 011 10010010 10011110 1010 10010000 10011010 M U Sp K O M P U T E 10011100 000 101100000 001 10010100 000 10010000 10011010 1000

R Sp D A N Sp T E K 10010100 011 1110 011 101100010 010 000 010 10010100 10010110 011

N O L O G I Sp I N F O 10011100 10010010 001 10011000 010


(48)

Lakukan penambahan bit padding dan flagging pada akhir string bit. Hitung sisa bagi panjang string bit dengan tujuh. karena hasil dari sisa bagi adalah 4 maka ditambahkan padding berupa angka 0 sebanyak 3 buah “000” untuk mencukupi jumlah bit ketika dibagi tujuh dan flag bits “0000011” yang menunjukkan jumlah penambahan padding dalam bentuk binari sehingga string bit menjadi:

“10010110001100010101110100100000011001100000001011101001001010100 00100001110010010100111101010100100001001101010011100000101100000 00110010100000100100001001101010001001010001111100111011000100100 0001010010100100101100111001110010010010001100110000100000000011”. Total bit setelah penambahan padding berjumlah 264 bit.

Sebelum menuliskan string kompresi pada file, konversi bit menjadi karakter berdasarkan tabel ASCII. Maka, didapatkan hasil karakter kompresi sebagai berikut:

1001011 0001100 0101011 1010010 0000011 0011000 0000101 1101001

K Œ « Ò ETX CAN … i

0010101 0000100 0011100 1001010 0111101 0101001 0000100 1101010

• EOT FS J = ) EOT j

0111000 0010110 0000001 1001010 0000100 1000010 0110101 0001001

8 SYN SOH J EOT B 5 HT

0100011 1110011 1011000 1001000 0010100 1010010 0101100 1110011

# s X H DC4 R , s

1001001 0010001 1001100 0010000 0000011

a. Ratio of Compression (Rc)

I DC1 L DLE ETX String hasil kompresi yaitu:

K Œ « Ò ETXCAN … i • EOTFS J = ) EOT j 8 SYN SOH J EOT B 5 HT # s X H DC4 R , s I DC1 L DLEETX

Dari proses kompresi, kinerja kompresi algoritma dapat dihitung dengan cara sebagai berikut:

�� =������������������������� ����������������ℎ�������� �� =368


(49)

b. Compression Ratio (Cr)

�� = ����������������ℎ��������

������������������������� � 100 % �� = 249

368 � 100 % = 67,66 % c. Redudancy (Rd)

�� = 100 %− ��

�� = 100 %−67,66 % = 32,34 % 2) Proses Dekompresi algoritma Even-Rodeh

Proses dekompresi teks dimulai dengan mengubah karakter kompresi menjadi string bit. Didapatkan string bit hasil kompresi yaitu:

“10010110001100010101110100100000011001100000001011101001001010100 00100001110010010100111101010100100001001101010011100000101100000 00110010100000100100001001101010001001010001111100111011000100100 0001010010100100101100111001110010010010001100110000100000000011”. Sebelum string bit dirubah menjadi karakter asli , tentukan panjang string yang harus dibaca dengan menghapus padding dan flag bits dari string bit. Lakukan pembacaan flag bits yaitu tujuh bit terakhit string untuk mengetahui berapa jumlah padding yang ditambahkan pada string. Tujuh bit terakhir string bit adalah “0000011” atau sama dengan 3 dalam bentuk desimal. Maka dapat diketahui bahwa dilakukan penambahan 3 bit diakhir string, sehingga indeks terakhir (n) untuk pembacaan string bit adalah panjang string bit dikurangi dengan flag bits (7 bit) ditambah jumlah padding yaitu 7 atau dapat ditulis n = panjang string bit – (7 + padding).

Setelah didapatkan indeks terakhir yang akan dibaca dari string, dilakukan pembacaan string bit dari indeks ke-0 sampai ke-n. Indeks ke-0 dari string adalah “0” kemudian dilakukan pengecekan ke tabel kode Even-Rodeh. Karena “0” tidak merepresentasikan karakter apapun pada kode, maka pembacaan dilanjutkan pada indeks ke-1. Indeks ke-1 dari string adalah “0” dan dilakukan pengecekan ke tabel kode. Kode “00” tidak terdapat didalam tabel kode sehingga pengecekan dilanjutkan pada indeks ke-3. Indeks ke-3 dari string adalah “0”. Kode “000”


(50)

terdapat pada kode tabel dan mewakili karakter Spasi. Proses ini akan terus dilakukan hingga indeks ke-n, sehingga diperoleh string asli yaitu “FAKULTAS


(51)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

Implementasi sistem merupakan tahap penerapan sistem dalam bentuk perangkat lunak maupun keras berdasarkan hasil yang diperoleh pada tahap analisis dan perancangan sistem. Sistem dibangun dengan menggunakan prosesor Intel Core i3 2,3 GHz, RAM 2GB, sistem operasi Microsoft Windows 8.1 Enterprise dan bahasa pemrograman C#. Perangkat lunak yang digunakan sebagai Integrated Development Environment (IDE) untuk C# adalah SharpDevelop versi 4.4.1.9729-7196a277.

Implementasi sistem dibagi menjadi 6 form yaitu form beranda sebagai halaman utama, form pembangkit kunci untuk menampilkan menu pembangkit kunci, form enkripsi untuk menampilkan menu enkripsi, form dekripsi untuk menampilkan menu dekripsi, form bantuan untuk menampilkan petunjuk pemakaian aplikasi, dan form tentang untuk menampilkan informasi aplikasi dan profil penulis.

4.1.1 Halaman Beranda

Beranda merupakan halaman utama yang muncul pertama kali ketika aplikasi dijalankan. Terdapat 6 Tab pada halaman beranda yaitu Tab Beranda, Tab Pembangkit Kunci, Tab Pengirim, Tab Penerima, Tab Bantuan, Tab Tentang. Tampilan halaman beranda dapat dilihat pada Gambar 4.1.


(52)

Gambar 4.1. Tampilan Halaman Beranda 4.1.2 Halaman Pembangkit Kunci

Tab Pembangkit Kunci merupakan form yang digunakan oleh User untuk membangkitkan kunci enkripsi dan dekripsi ketika pertama kali mengenkripsi pesan. Terdapat beberapa komponen interface untuk mendukung penggunaan proses seperti combobox untuk menentukan digit bilangan prima, textbox untuk menampilkan nilai bilangan prima dan nilai kunci, dan button untuk memulai proses membangkitkan bilangan prima dan kunci. Tampilan tab pembangkit kunci dapat dilihat pada Gambar 4.2.


(53)

4.1.3 Halaman Pengirim

Tab pengirim digunakan oleh Sender untuk melakukan proses enkripsi atau dekripsi. Pada form pengirim terdapat beberapa komponen interface pendukung proses antara lain textbox untuk menampilkan kunci enkripsi atau dekri pengirimsi, direktori file yang akan dilakukan enkripsi, dekripsi, kompresi, atau dekompresi dan informasi mengenai proses. Richtextbox untuk menampilkan teks sebelum dan sesudah enkripsi, dan button untuk memulai proses enkripsi, dekripsi, kompresi atau dekompresi. Tampilan halaman enkripsi dapat dilihat pada Gambar 4.3.

Gambar 4.3. Tampilan Halaman Pengirim 4.1.4 Halaman Penerima

Tab penerima digunakan oleh Recipient untuk melakukan proses enkripsi dan dekripsi. Beberapa komponen interface pada tab penerima yaitu textbox untuk menampilkan direktori file yang akan diproses dan menampilkan informasi yang berkaitan dengan proses dekripsi, kompresi, dan dekompresi, richtextbox untuk menampilkan teks sebelum dan sesudah enkripsi atau dekripsi, dan button untuk memulai proses enkripsi, dekripsi, kompresi, atau dekompresi. Tampilan form dekripsi dapat dilihar pada Gambar 4.4.


(54)

Gambar 4.4 Tampilan Halaman Penerima 4.1.5 Halaman Bantuan

Tab bantuan berisi petunjuk penggunaan aplikasi yang terbagi atas 6 bagian yaitu petunjuk pembangkit kunci pengirim dan penerima, enkripsi dan dekripsi pengirim, enkripsi dan dekripsi penerima. Tampilan halaman bantuan dapat dilihat pada Gambar 4.5.


(55)

4.1.6 Halaman Tentang

Tab tentang berisi informasi mengenai aplikasi dan profil programmer. Tampilan halaman tentang dapat dilihat pada Gambar 4.6.

Gambar 4.6. Tampilan Halaman Tentang

4.2 Pengujian Sistem

4.2.1 Pengujian Proses Enkripsi Pengirim (Enkripsi1)

Sebelum melakukan proses enkripsi, Pengirim akan membangkitkan bilangan prima dengan memilih digit bilangan prima yang diinginkan dan mengeksekusi tombol Generate Prima pada tab pembangkit kunci.

Setelah bilangan prima didapatkan, Pengirim membangkitkan kunci enkripsi dan dekripsi dengan mengeksekusi tombol Generate Kunci dan menyimpan kunci yang didapatkan. Pembangkit kunci Pengirim dapat dilihat pada gambar 4.7.


(56)

Untuk memulai proses Enkripsi1, Sender akan membuka file kunci dengan mengeksekusi tombol Browse dan sistem akan menampilkan direktori penyimpanan file. Setelah Sender memilih file kunci dengan ekstensi *.kma, sistem akan menampilkan kunci pada textbox.

Gambar 4.8. Kunci Enkripsi Pengirim

Kemudian Sender memilih file dokumen untuk dienkripsi dengan mengeksekusi tombol Browse dan sistem akan menampilkan window direktori penyimpanan file. Setelah Sender memilih file, konten file akan tampil pada textbox. Untuk melakukan proses enkripsi, Sender mengeksekusi tombol Enkripsi Teks dan sistem akan menampilkan hasil enkripsi Cipherteks1 dan waktu enkripsi.

Gambar 4.9. Hasil Eksekusi Enkripsi1

Setelah melakukan enkripsi, Sender menyimpan hasil enkripsi dengan mengeksekusi tombol Simpan C1. Untuk mengkompresi file cipherteks1, Sender memilih file enkripsi untuk dikompresi dengan mengeksekusi tombol Browse dan sistem akan menampilkan window direktori penyimpanan file. Selanjutnya, User mengeksekusi tombol Kompresi untuk menjalankan proses.

Gambar 4.10. Kompresi Cipherteks1

Window Save akan muncul ketika tombol dieksekusi dan Sender memilih direktori untuk menyimpan file hasil kompresi Cipherteks1. Proses kompresi akan menghasilkan sebuah file output dengan dengan ekstensi *.erc1. File output berisi


(57)

karakter hasil kompresi dan bilangan prima yang akan digunakan oleh Recipient untuk membangkitkan kunci enkripsi dan dekripsi miliknya.

Gambar 4.11. File Hasil Kompresi Even-Rodeh

Angka setelah tanda “/*/” pertama merupakan karakter yang ada pada file sebelum dilakukan kompresi. Karakter ini akan digunakan pada proses dekompresi untuk mengembalikan isi file terkompresi menjadi file asli kembali. Angka setelah tanda “/*/” kedua adalah bilangan prima. Bilangan prima akan digunakan oleh Recipient untuk membangkitkan kunci enkripsi dan dekripsi.

Sistem akan menampilkan waktu kompresi, Ratio of Compression, Compression Ratio, dan Redudancy.

Gambar 4.12. Informasi Enkripsi1 4.2.2 Pengujian Proses Enkripsi Penerima (Enkripsi2)

Setelah menerima file cipherteks, Recipient membangkitkan kunci enkripsi dan dekripsi miliknya dengan cara mengeksekusi tombol Browse dan memilih file cipherteks. Sistem akan menampilkan direktori penyimpanan file. Setelah Recipient memilih file, bilangan prima akan tampil pada textbox. Kemudian, Recipient membangkitkan kunci dengan mengeksekusi tombol Generate Kunci dan menyimpan


(58)

kunci dengan mengeksekusi tombol Simpan Kunci. Kunci Recipient disimpan dengan ekstensi *.kmb.

Gambar 4.13. Hasil Generate Kunci Pengirim

Pada Enkripsi2, proses yang dijalankan adalah melakukan dekompresi pesan dengan mengeksekusi tombol Browse dan sistem akan menampilkan window direktori penyimpanan file. Selanjutnya User memilih file untuk diproses dengan ekstensi *.erc1.

Gambar 4.14. Dekompresi Cipherteks1

Setelah tombol Dekompresi dieksekusi, file akan didekompresi dan konten file akan ditampilkan oleh sistem pada textbox beserta waktu dekompresi file. Kemudian, Recipient memilih file kunci dengan mengeksekusi tombol Browse dan sistem akan menampilkan window direktori penyimpanan file. Setelah file kunci dengan ekstensi *.kmb dipilih, maka kunci enkripsi akan tampil pada textbox. Recipient mengeksekusi tombol Enkripsi Teks dan sistem akan menampilkan hasil Enkripsi2 yaitu Cipherteks2 dan waktu enkripsi.


(59)

Kemudian, Recipient menyimpan hasil enkripsi dengan mengeksekusi tombol Simpan C2. Untuk mengkompresi file C2, Recipient memilih file enkripsi untuk dikompresi dengan mengeksekusi tombol Browse pada grupBox Kompresi dan sistem akan menampilkan window direktori penyimpanan file. Recipient memilih file cipherteks2 dan mengeksekusi tombol Kompresi.

Gambar 4.16. Kompresi Cipherteks2

Pop-Up Window Save akan muncul ketika tombol dieksekusi dan Recipient memilih direktori untuk menyimpan file hasil kompresi Cipherteks2. File akan disimpan dengan ekstensi *.erc2. Sistem akan menampilkan waktu kompresi, Rc, Cr, dan Rd.

Gambar 4.17. Informasi Enkripsi2 4.2.3 Pengujian Proses Dekripsi Pengirim (Dekripsi1)

Alur proses dekripsi1 sama dengan Enkripsi 2, dimana proses dimulai dengan melakukan dekompresi teks. Sender memilih file untuk didekompresi dengan ekstensi *.erc2 dan mengeksekusi tombol Dekompresi.

Gambar 4.18. Dekompresi Cipherteks2

Sistem akan menampilkan hasil dekompresi file dan waktu proses dekompresi. Selanjutnya, Sender memilih file kunci berekstensi *.kma dengan mengeksekusi tombol Browse dan kemudian mengeksekusi tombol Dekripsi Teks untuk mendekripsi teks.


(60)

Gambar 4.19. Hasil Eksekusi Dekripsi1

Setelah melakukan enkripsi, Sender menyimpan hasil enkripsi dengan mengeksekusi tombol Simpan C3. Untuk mengkompresi file cipherteks3, Sender memilih file untuk dikompresi dengan mengeksekusi tombol Browse pada grupBox Kompresi dan mengeksekusi tombol Kompresi.

Gambar 4.20. Kompresi Cipherteks3

Pop-up Window Save akan muncul ketika tombol Kompresi dieksekusi dan Sender memilih direktori untuk menyimpan file hasil kompresi Cipherteks3. File akan disimpan dengan ekstensi *.erc3. Sistem akan menampilkan waktu kompresi, Ratio of Compression, Compression Ratio, dan Redudancy.

Gambar 4.21. Informasi Dekripsi1 4.2.4 Pengujian Proses Dekripsi Penerima (Dekripsi2)

Dekripsi2 dimulai dengan melakukan dekompresi terhadap file kompresi Cipherteks3 (*.erc3) dengan mengeksekusi tombol Browse dan memilih file yang akan diproses.


(61)

Tombol dekompresi dieksekusi untuk memulai proses dan sistem akan menampilkan hasil dekompresi file beserta waktu dekompresi. File kunci dipilih dengan mengeksekusi tombol Browse dan memilih file kunci penerima dengan ekstensi *.kmb. Kemudian, Recipient mengeksekusi tombol Dekripsi teks untuk mendekripsi teks yang sudah didekompresi. Karena Dekripsi2 merupakan tahap terakhir dari enkripsi-dekripsi pesan algoritma Massey-Omura, maka hasil yang didapatkan setelah proses Dekripsi2 merupakan pesan asli. Sistem akan menampilkan waktu dekompresi dan waktu dekripsi.

Gambar 4.23. Hasil Eksekusi Dekripsi2 4.3 Hasil Pengujian Sistem

Pengujian dilakukan untuk mengetahui hasil dari proses yang dilakukan oleh sistem berupa waktu proses, Ratio of Compression, Compression Ratio, dan Redudancy.

4.3.1 Pengujian algoritma Massey-Omura

Tabel 4.1. Hasil Pengujian Waktu Proses Algoritma Massey-Omura Ukuran

File (KB)

Bil. Prima

Kunci Waktu Proses (s)

Enk. pengirim

Enk. penerima

Dek. pengirim

Dek.

penerima Enk.1 Enk. 2 Dek.1 Dek.2

144 241 193 233 97 137 2,68 3,62 2,78 3,44


(62)

13309 11621 743 5309 6251 82,18 4,95 66,5 76,03

292

241 193 233 97 137 6,54 7,31 5,53 7,05

2791 353 2239 1067 319 7,31 31,36 13,24 7,65

13309 11621 743 5309 6251 212,84 12,66 166,37 190,28

440

241 193 233 97 137 10,27 9,34 6,77 8,68

2791 353 2239 1067 319 13,42 48,54 21,69 12,25

13309 11621 743 5309 6251 316,69 20,43 254,9 283,3

Pengujian algoritma Massey-Omura dilakukan dengan menggunakan tiga file dengan bilangan prima dan pasangan kunci yang berbeda. Berdasarkan Tabel 4.1 pengujian proses menunjukkan bahwa waktu proses enkripsi dan dekripsi algoritma dipengaruhi oleh ukuran file dan besar kunci yang digunakan. Semakin besar ukuran file, maka waktu proses menjadi semakin lama. Hal ini dapat dilihat pada proses enkripsi 1 file berukuran 114 KB, 292 KB, dan 440 KB dengan kunci enkripsi 193 memerlukan waktu proses yang berbeda yaitu 2,68s, 6,54s, dan 10,27s. Hal lain yang mempengeruhi waktu proses ialah kunci enkripsi, dimana semakin besar kunci yang digunakan waktu proses menjadi semakin lama. Pengaruh dari penggunaan kunci dapat dilihat pada percobaan file berukuran 440 KB dengan kunci enkripsi 193, 353, dan 11621 yang memerlukan waktu proses 10,274s, 13,42s, dan 316,69s.

Tabel 4.2. Ukuran File Output Algoritma Massey-Omura File (KB) Bil.

Prima File Cipherteks1 (MB) File Cipherteks2 (MB) File Cipherteks3 (MB) 144

241 2,71 2,67 2,57

2791 3,42 3,32 3,45

13309 3,69 3.94 3,87

292

241 6,47 6,36 6,14

2791 8,17 7,91 8,23

13309 8,8 9,39 9,23

440

241 10 9,84 9,5

2791 12,6 12,2 12,7

13309 13,6 14,5 14,2

Selain ukuran file dan besar kunci yang digunakan, bilangan prima juga mempengaruhi percobaan proses enkripsi-dekripsi dalam hal ukuran output proses. Sebagaimana terlihat pada Tabel 4.2 semakin besar digit bilangan prima yang digunakan, maka ukuran file output menjadi semakin besar. Salah satu contoh yaitu file berukuran 292 KB dengan menggunakan bilangan prima 241 dan 13309 menghasilkan output dengan ukuran 6,4 MB dan 8,8 MB.


(63)

4.3.2 Pengujian algoritma Even-Rodeh

Tabel 4.3. Hasil Pengujian Proses Kompresi Cipherteks1 No Ukuran File sblm Kompresi (MB) Ukuran File stlh Kompresi (MB) Waktu Kompresi (s) Waktu Dekompresi (s)

RC CR (%) Rd (%)

1 2,71 1,32 2,464 6,217 2,342 42,691 57,308

2 3,42 1,89 3,368 5,499 2,066 48,388 51,611

3 3,69 2,17 3,775 6,254 1,94 51,541 48,458

4 6,47 3,15 4,067 9,138 2,343 42,676 57,323

5 8,17 4,51 5,563 12,799 2,068 48,345 51,654

6 8,8 5,19 6,477 14,044 1,939 51,564 48,435

7 10 4,88 7,182 14,389 2,343 42,675 57,324

8 12,6 6,98 8,382 19,343 2,068 48,344 51,655

9 13,6 8,02 9,32 22,032 1,939 51,562 48,437

Rata-rata 5,622 12,19 2,116 47,531 52,467

Pengujian algoritma Even-Rodeh dilakukan dengan menggunakan file cipherteks yang dihasilkan dari proses enkripsi dan dekripsi Massey-Omura. Tabel 4.3 merupakan hasil dari pengujian kompresi file Cipherteks1 yang didapatkan dari proses Enkripsi1. Hasil pengujian menunjukkan bahwa semakin besar ukuran file, waktu proses menjadi semakin lama. Dapat dilihat pada Tabel 4.3 bahwa proses dekompresi teks memerlukan waktu lebih lama dibandingkan dengan proses kompresi dengan rata-rata waktu kompresi 5,622s dan waktu dekompresi 12,19s.

Tabel 4.4. Hasil Pengujian Proses Kompresi Cipherteks2 No Ukuran File sblm Kompresi (MB) Ukuran File stlh Kompresi (MB) Waktu Kompresi (s) Waktu Dekompresi (s)

RC CR (%) Rd (%)

1 2,67 1,36 1,901 3,932 2,233 44,771 55,228

2 3,32 1,78 2,551 4,921 2,129 46,962 53,037

3 3.94 2,21 2,83 6,354 2,037 49,077 50,922

4 6,36 3,25 4,215 8,982 2,234 44,744 55,255

5 7,91 4,24 5,283 11,66 2,132 46,923 53,076

6 9,39 5,27 6,215 14,519 2,035 49,119 50,88

7 9,84 5,03 6,531 14,673 2,235 44,743 55,256

8 12,2 6,56 8,574 18,582 2,131 46,924 53,075

9 14,5 8,15 10,251 22,527 2,036 49,114 50,885

Rata-rata 5,372 11,794 2,133 46,93 53,068

Tabel 4.4 merupakan hasil dari pengujian kompresi file Cipherteks2 yang didapatkan dari proses Enkripsi2. Sebagaimana terlihat pada tabel, proses dekompresi teks


(1)

DAFTAR ISI

Hal.

HALAMAN JUDUL i

PERSETUJUAN ii

PERNYATAAN iii

UCAPAN TERIMA KASIH iv

ABSTRAK vi

ABSTRAC vii

DAFTAR ISI viii

DAFTAR TABEL x

DAFTAR GAMBAR xi

DAFTAR LAMPIRAN xiii

BAB 1 Pendahuluan

1.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Ruang lingkup Masalah 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 4

1.6 Metode Penelitian 4

1.7 Sistematika Penulisan 5

BAB 2 Tinjauan Pustaka

2.1 Kriptografi 6

2.1.1 Jenis Kriptografi Berdasarkan Kunci Enkripsi 7 2.1.2 Kelebihan Dan Kelemahan Kriptografi Kunci Publik 8

2.2 Three-Pass-Protocol 8

2.3 Algoritma Massey-Omura 9

2.4 Aspek Matematika pada Massey-Omura Cryptosystem 10

2.4.1 Aritmatika Modular 10

2.4.2 Faktor Persekutuan Terbesar 11

2.4.3 Relatif Prima 11

2.4.4 Inversi Modulo 11

2.5 Kompresi Data 12

2.5.1 Parameter Analisis Algoritma Kompresi 12 2.5.2 Jenis Kompresi Data Berdasarkan Output 13 2.6 Algoritma Even-Rodeh File Teks 14


(2)

BAB 3 Analisis Dan Perancangan Sistem

3.1 Analisis Sistem 17

3.1.1 Analisis Masalah 17

3.1.2 Analisis Persyaratan 19

3.1.3 Pemodelan Sistem 20

3.1.4 Pseudocode 29

3.1.5 Flowchart 35

3.2 Perancangan Sistem 41

3.2.1 Halaman Beranda 41

3.2.2 Halaman Pembangkit kunci 42

3.2.3 Halaman Pengirim 43

3.2.4 Halaman Penerima 45

3.2.5 Halaman Bantuan 47

3.2.6 Halaman Tentang 48

3.3 Tahapan Sistem 49

3.3.1 Tahapan Algoritma Massey-Omura 49 3.3.2 Tahapan Algoritma Even-Rodeh 52

BAB 4 Implementasi Dan Pengujian Sistem

4.1 Implementasi Sistem 56

4.1.1 Halaman Beranda 56

4.1.2 Halaman Pembangkit kunci 57

4.1.3 Halaman Pengirim 58

4.1.4 Halaman Penerima 58

4.1.5 Halaman Bantuan 59

4.1.6 Halaman Tentang 60

4.2 Pengujian Sistem 60

4.2.1 Pengujian Proses Enkripsi Pengirim 60 4.2.2 Pengujian Proses Enkripsi Penerima 62 4.2.3 Pengujian Proses Dekripsi Pengirim 64 4.2.4 Pengujian Proses Dekripsi Penerima 65

4.3 Hasil Pengujian Sistem 66

4.3.1 Pengujian algoritma Massey-Omura 66 4.3.2 Pengujian algoritma Even-Rodeh 68

4.4 Kompleksitas Algoritma 69

4.4.1 Kompleksitas algoritma Massey-Omura 69 4.4.2 Kompleksitas algoritma Even-Rodeh 71

BAB 5 Kesimpulan Dan Saran


(3)

DAFTAR TABEL

Hal.

TABEL 2.1. Penyelesaian Invers 11

TABEL 2.2. Kode Even-Rodeh 15

TABEL 2.3. Jumlah bit kode ER berdasarkan variasi karakter 15

TABEL 3.1. Perhitungan Kunci dA 49

TABEL 3.2. Perhitungan Kunci dB 50

TABEL 3.3. Bit Karakter sebelum Kompresi 52 TABEL 3.4. Bit Karakter setelah Kompresi 53 TABEL 4.1. Hasil Pengujian Waktu Proses Algoritma Massey-Omura 66 TABEL 4.2. Ukuran File Output Algoritma Massey-Omura 67 TABEL 4.3. Hasil Pengujian Proses Kompresi Cipherteks1 68 TABEL 4.4. Hasil Pengujian Proses Kompresi Cipherteks2 68 TABEL 4.5. Hasil Pengujian Proses Kompresi Cipherteks3 69 TABEL 4.6. Kompleksitas Algoritma Massey-Omura 69 TABEL 4.7. Kompleksitas Algoritma Even-Rodeh 71


(4)

DAFTAR GAMBAR

Hal. GAMBAR 2.1. Skema Kriptografi Simetris 7 GAMBAR 3.1. Diagram Ishikawa Analisis Masalah 18 GAMBAR 3.2. General Arsitektur Sistem 19

GAMBAR 3.3. Use Case Diagram Sistem 21

GAMBAR 3.4. Sequence Diagram Sistem 22

GAMBAR 3.5. Activity Diagram Pembangkit Bilangan Prima 23 GAMBAR 3.6. Activity Diagram Pembangkit Kunci A 23 GAMBAR 3.7. Activity Diagram Pembangkit Kunci B 24 GAMBAR 3.8. Activity Diagram Enkripsi1 25 GAMBAR 3.9. Activity Diagram Enkripsi2 26 GAMBAR 3.10. Activity Diagram Dekripsi1 27 GAMBAR 3.11. Activity Diagram Dekripsi2 28 GAMBAR 3.12. Activity Diagram Kompresi 28 GAMBAR 3.13. Activity Diagram Dekompresi 29

GAMBAR 3.14. Flowchart Sistem 36

GAMBAR 3.15. Flowchart Pembangkit Kunci 37 GAMBAR 3.16. Flowchart Enkripsi1 dan Enkripsi2 38 GAMBAR 3.17. Flowchart Dekripsi1 dan Dekripsi2 39 GAMBAR 3.18. Flowchart Even-Rodeh Code 40 GAMBAR 3.19. Perancangan Form Beranda 41 GAMBAR 3.20. Perancangan Form Pembangkit Kunci 42 GAMBAR 3.21. Perancangan Form Pengirim 43 GAMBAR 3.22. Perancangan Form Penerima 45 GAMBAR 3.23. Perancangan Form Bantuan 47 GAMBAR 3.24. Perancangan Form Tentang 48

GAMBAR 4.1. Tampilan Halaman Beranda 57

GAMBAR 4.2. Tampilan Halaman Pembangkit Kunci 57 GAMBAR 4.3. Tampilan Halaman Pengirim 58 GAMBAR 4.4. Tampilan Halaman Penerima 59

GAMBAR 4.5. Tampilan Halaman Bantuan 59

GAMBAR 4.6. Tampilan Halaman Tentang 60 GAMBAR 4.7. Hasil Generate Bilangan Prima dan Kunci Pengirim 60


(5)

GAMBAR 4.11. File Hasil Kompresi Even-Rodeh 62

GAMBAR 4.12. Informasi Enkripsi1 62

GAMBAR 4.13. Hasil Generate Kunci Pengirim 63

GAMBAR 4.14. Dekompresi Cipherteks1 63

GAMBAR 4.15. Hasil Eksekusi Enkripsi2 63

GAMBAR 4.16. Kompresi Cipherteks2 64

GAMBAR 4.17. Informasi Enkripsi2 64

GAMBAR 4.18. Dekompresi Cipherteks2 64

GAMBAR 4.19. Hasil Eksekusi Dekripsi1 65

GAMBAR 4.20. Kompresi Cipherteks3 65

GAMBAR 4.21. Informasi Dekripsi1 65

GAMBAR 4.22. Dekompresi Cipherteks3 65


(6)

DAFTAR LAMPIRAN

Hal.

LAMPIRAN 1 Listing Program A1