Implementasi Algoritma Trithemius dengan Algoritma Rice Dalam Pengamanan dan Kompresi File Teks

(1)

About

public partial class about : Form {

public about() {

InitializeComponent();

}

void Button1Click(object sender, EventArgs e) {

MainForm home = new MainForm(); home.Show();

this.Hide(); }

} }

Help

public partial class help : Form {

public help() {

InitializeComponent();

}

void Button1Click(object sender, EventArgs e) {

MainForm home = new MainForm(); home.Show();

this.Hide(); }

} }

Form 2 (Form Enkripsi + Dekripsi) using System;

using System.Diagnostics;

using System.Drawing; using System.IO; using System.Text; using System.Threading; using System.Windows.Forms;

using CSUsingOpenXmlPlainText; using DocumentFormat.OpenXml;

using DocumentFormat.OpenXml.Packaging;

namespace TriRice {


(2)

public partial class Form2 : Form {

public Form2() { InitializeComponent(); } GetWordPlainText getWordPlainText;

void Button1Click(object sender, EventArgs e) {

OpenFileDialog open = new OpenFileDialog(); if(open.ShowDialog() == DialogResult.OK) {

string metode = open.FileName.Substring (open.FileName.Length-4,4);

if(metode=="docx") {

textBox4.Text = open.FileName.ToString();

try

{

getWordPlainText = new GetWordPlainText(open.FileName); textBox1.Text = getWordPlainText.ReadWordDocument(); }

catch (Exception ex) {

MessageBox.Show(ex.Message, "Error", MessageBoxB uttons.OK, MessageBoxIcon.Warning);

} finally {

if (getWordPlainText != null) {

getWordPlainText.Dispose(); }

} }

else {

MessageBox.Show("File yang anda pilih salah"); }

} }

public string ReadWordDocument() {

StringBuilder sb = new StringBuilder(); return sb.ToString();

}

public string GetPlainText(OpenXmlElement element) {

StringBuilder PlainTextInWord = new StringBuilder(); foreach (OpenXmlElement section in element.Elements()) {

switch (section.LocalName) {


(3)

PlainTextInWord.Append(section.InnerText); break;

case "cr": // Carriage return

case "br": // Page break

PlainTextInWord.Append(Environment.NewLine); break;

// Tab

case "tab":

PlainTextInWord.Append("\t"); break;

// Paragraph

case "p":

PlainTextInWord.Append(GetPlainText(section)); PlainTextInWord.AppendLine(Environment.NewLine); break;

default:

PlainTextInWord.Append(GetPlainText(section)); break;

} }

return PlainTextInWord.ToString(); }

public bool enc;

void Button3Click(object sender, EventArgs e) {

Stopwatch watch1 = new Stopwatch(); watch1.Start();

enc = true;

//Thread.Sleep(1000);

Trithemius tw = new Trithemius(); watch1.Stop();

textBox2.Text = tw.encryption(textBox1.Text,textBox3.Text); label7.Text = "Running time =

" + Math.Round(Convert.ToDecimal(watch1.ElapsedMilliseconds),8).ToString()+

" ms"; }

void Button4Click(object sender, EventArgs e) {

MainForm home = new MainForm(); home.Show();

this.Hide(); }

void Button5Click(object sender, EventArgs e) {

if(enc){


(4)

save.Filter = "Encrypt File Trithemius|*.ttm"; save.FileName = "*.ttm";

if(save.ShowDialog() == DialogResult.OK) {

FileStream fs

= new FileStream(save.FileName,FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fs); SeekOrigin sk = new SeekOrigin();

sw.BaseStream.Seek(0,sk); sw.WriteLine(textBox2.Text); sw.Flush();

sw.Close(); }

} else{

SaveFileDialog save = new SaveFileDialog(); save.Filter = "Compress File Rice Code|*.rc"; save.FileName = "*.rc";

if(save.ShowDialog() == DialogResult.OK) {

FileStream fs

= new FileStream(save.FileName,FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fs); SeekOrigin sk = new SeekOrigin();

sw.BaseStream.Seek(0,sk); sw.Write(code);

sw.Flush(); sw.Close();

string filename =

save.FileName.Substring(0,save.FileName.Length-3) + ".dat"; FileStream fstream

= new FileStream(filename, FileMode.OpenOrCreate);

StreamWriter sww = new StreamWriter(fstream); SeekOrigin seekorigin = new SeekOrigin(); sww.BaseStream.Seek(0, seekorigin);

sww.Write(cs+"~");

for(int n=0; n<cs.Length; n++) sww.Write(rcc[n]+"~"); sww.Flush();

sww.Close(); } } } string cs; string[] rcc; string code;

void Button6Click(object sender, EventArgs e) {

Stopwatch watch2 = new Stopwatch(); watch2.Start();

string awal = textBox2.Text;

int panjang_awal = textBox2.Text.Length, panjang_akhir; enc = false;

RiceCode rrc = new RiceCode(); code =

rrc.RunRiceCodes(textBox2.Text,int.Parse(textBox5.Text)); textBox2.Text = code.ToString();


(5)

double ss = (panjang_awal panjang_akhir)*1.0/panjang_awal * 100, rc = (panjang_awal*1.0)/panjang_akhir, cr = (panjang_akhir * 1.0 / panjang_awal); label6.Text = "";

label6.Text += "RC =

"+rc.ToString() + "" + Environment.NewLine; label6.Text += "CR =

"+cr.ToString() + "" + Environment.NewLine;

label6.Text += "SS = "+ss.ToString() + " %" + Environment.NewLine;

watch2.Stop();

label6.Text += "Running time =

" + Math.Round(Convert.ToDecimal(watch2.ElapsedMilliseconds),8).ToString()+

" ms";

cs = rrc.GetCs(); rcc = rrc.GetRc();

} } }

Form 3 (Dekompresi + Dekripsi) using System;

using System.Diagnostics;

using System.Drawing;

using System.IO;

using System.Windows.Forms;

namespace TriRice {

public partial class Form3 : Form {

public Form3() {

InitializeComponent(); }

void Button2Click(object sender, EventArgs e) {

MainForm home = new MainForm(); home.Show();

this.Hide(); }

string cs,code; string[] rc;

void Button1Click(object sender, EventArgs e) {

OpenFileDialog open = new OpenFileDialog(); open.Filter = "Rice Code|*.rc";

if(open.ShowDialog() == DialogResult.OK) {

string metode =

open.FileName.Substring(open.FileName.Length-2,2); if(metode=="rc")


(6)

{

textBox3.Text = open.FileName.ToString();

string nama =

open.FileName.Substring(0, open.FileName.Length); FileStream fs

= new FileStream(nama, FileMode.Open, FileAccess.ReadWrite); StreamReader sr = new StreamReader(fs); sr.BaseStream.Seek(0, SeekOrigin.Begin); code = sr.ReadToEnd();

textBox1.Text = code; sr.Close();

string namaa =

open.FileName.Substring(0, open.FileName.Length-3) +".dat"; FileStream fss

= new FileStream(namaa, FileMode.Open, FileAccess.ReadWrite); StreamReader srr = new StreamReader(fss); srr.BaseStream.Seek(0, SeekOrigin.Begin); string temp = srr.ReadToEnd();

string[] infochar = new string[1]; infochar = temp.Split('~');

cs = infochar[0];

string[] info = new string[cs.Length+1]; rc =new string[cs.Length];

info = temp.Split('~');

for(int i = 1; i<=cs.Length; i++) {

rc[i-1] = info[i];

}

srr.Close(); }

} }

void Button6Click(object sender, EventArgs e) {

Stopwatch watch3 = new Stopwatch(); watch3.Start();

Trithemius tw = new Trithemius();

textBox2.Text = tw.decryption(textBox1.Text,textBox4.Text); watch3.Stop();

label6.Text += "Running time =

" + Math.Round(Convert.ToDecimal(watch3.ElapsedMilliseconds),8).ToString()+

" ms"; }

void Button4Click(object sender, EventArgs e) {

Stopwatch watch4 = new Stopwatch(); watch4.Start();

RiceCode rrc = new RiceCode();

textBox1.Text = rrc.RunRiceCodes2(textBox1.Text,cs,rc);

watch4.Stop();


(7)

" ms"; } } } Getwordplaintext using System;

using System.IO;

using System.Text;

using DocumentFormat.OpenXml;

using DocumentFormat.OpenXml.Packaging;

namespace CSUsingOpenXmlPlainText {

public class GetWordPlainText : IDisposable {

// Specify whether the instance is disposed.

private bool disposed = false;

// The word package

private WordprocessingDocument package = null;

/// <summary>

/// Get the file name

/// </summary>

private string FileName = string.Empty;

/// <summary>

/// Initialize the WordPlainTextManager instance

/// </summary>

/// <param name="filepath"></param>

public GetWordPlainText(string filepath) {

this.FileName = filepath;

if (string.IsNullOrEmpty(filepath) || !File.Exists(filepath)) {

throw new Exception("The file is invalid. Please select an existing file again");

}

this.package = WordprocessingDocument.Open(filepath, true); }

/// <summary>

/// Read Word Document

/// </summary>

/// <returns>Plain Text in document </returns>

public string ReadWordDocument() {

StringBuilder sb = new StringBuilder(); OpenXmlElement element =

package.MainDocumentPart.Document.Body; if (element == null)

{

return string.Empty; }


(8)

sb.Append(GetPlainText(element)); return sb.ToString();

}

/// <summary>

/// Read Plain Text in all XmlElements of word document

/// </summary>

/// <param name="element">XmlElement in document</param>

/// <returns>Plain Text in XmlElement</returns>

public string GetPlainText(OpenXmlElement element) {

StringBuilder PlainTextInWord = new StringBuilder(); foreach (OpenXmlElement section in element.Elements()) {

switch (section.LocalName) {

// Text

case "t":

PlainTextInWord.Append(section.InnerText); break;

case "cr": // Carriage return

case "br": // Page break

PlainTextInWord.Append(Environment.NewLine); break;

// Tab

case "tab":

PlainTextInWord.Append("\t"); break;

// Paragraph

case "p":

PlainTextInWord.Append(GetPlainText(section)); PlainTextInWord.AppendLine(Environment.NewLine); break;

default:

PlainTextInWord.Append(GetPlainText(section)); break;

} }

return PlainTextInWord.ToString(); }

#region IDisposable interface

public void Dispose() {

Dispose(true);

GC.SuppressFinalize(this); }

protected virtual void Dispose(bool disposing) {

// Protect from being called multiple times.

if (disposed) {


(9)

if (disposing) {

// Clean up all managed resources.

if (this.package != null) {

this.package.Dispose(); }

}

disposed = true; }

#endregion

} }

Tabel

using System;

namespace TriRice {

public class Tabel {

char[] tbl

= {'Ā','ā','į','İ','ı','IJ','ij','Ă','Ĵ','ă','Ą','ą','Ć','ć','Ĉ','Ķ','ķ','ĸ', 'Ĺ','ĺ','Ļ','ļ','Ľ','ľ','Ŀ','ŀ','Ł','ł','ĉ','Ċ',

'ċ','Č','

','!','\"','#','$','%','&','\'','(',')','*','+',',', '-','.','/','0','1','2','3','4','5','6','7','8','9',':',';',

'<','=','>','?','@','A','B','C','D','E','F','G','H',' I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y',

'Z','[','\\',']','^','_','`','a','b','c','d','e','f',

'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w',

'x','y','z','{','|','}','~','Ɗ','Ď','ď','Đ','đ','Ē','

ē','Ĕ','ĕ','Ė','ė','Ę','ę','Ě','ě','Ĝ','ĝ','Ğ','ğ','Ġ','ġ','Ģ','ģ',

'Ĥ','ĥ','Ħ','ħ','Ĩ','ĩ','Ī','ī','Ĭ','ĭ','Į','¡','¢',' £','¤','¥','¦','§','¨','©','ª','«','¬','X','®','¯','°','±','²','³',

'´','µ','¶','·','¸','¹','º','»','¼','½','¾','¿','À',' Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ',

'Ò','Ó','Ô','Õ','Ö','×','Ø','Ù','Ú','Û','Ü','Ý','Þ',' ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï',

'ð','ñ','ò','ó','ô','õ','ö','÷','ø','ù','ú','û','ü',' ý','þ','ÿ'};

public int getDesimal(char x) {

for(int i = 0; i<256; i++) {

if(x.Equals(tbl[i])) return i;

}

return 0; }

public char getChar(int x)

{


(10)

} } }

Trithemius using System;

namespace TriRice {

public class Trithemius {

public Trithemius() {

}

char[] arrayindex= index.ToCharArray();

private char [] createkey(String key, string plaintext){ char[] arrayplaintext = plaintext.ToCharArray(); char[] arraykey = new char[arrayplaintext.Length]; char[] filler = key.ToCharArray();

int flag=0;

return arraykey; }

private int getindex(char character){ return i;

} }

return -1; }

private char getcharacter(int indext){ return arrayindex[i];

} }

return '0'; }

public String encryption(String plaintext, String key){ char[]arraykey = createkey(key, plaintext);

char[]arrayplaintext = plaintext.ToCharArray();

char[]arrayciphertext = new char[arrayplaintext.Length]; int p,k,c;

}

public String decryption(String ciphertext, String key){ char[]arraykey = createkey(key, ciphertext);

char[]arrayciphertext = ciphertext.ToCharArray();

char[]arrayplaintext = new char[arrayciphertext.Length]; int p,k,c;

arrayplaintext[i]=getcharacter(p); }

string hasil = new string(arrayplaintext); return hasil;


(11)

using System;

using System.Collections.Generic;

using System.Text;

using System.Windows.Forms;

namespace TriRice {

public class RiceCode {

public RiceCode() {

}

int[] fr; String cs; String[] rc;

public string GetCs() {

return cs; }

public string[] GetRc() {

return rc; }

String GetCharSet(String st){ Console.Write("getchar");

StringBuilder s = new StringBuilder(); int n = st.Length;

}

int CountChar(String s, char ch){

Console.Write("count char"); return s.Split(ch).Length - 1;

}

int[] CountFreq(String st){

Console.Write("count freq"); String charset = GetCharSet(st);

}

void InsertionSort(int[] freq, String charset) { Console.Write("insert");

fr = freq; cs = charset;

int n = charset.Length;

StringBuilder sb = new StringBuilder(charset);

}

String Reverse(String sb){ Console.Write("reverse");

char[] charArray = sb.ToCharArray(); Array.Reverse(charArray);

return new String(charArray); }


(12)

String DecToBin(int dec) {

StringBuilder bin = new StringBuilder(); int r = dec % 2;

bin.Insert(0, r); dec = dec / 2; while (dec != 0) { r = dec % 2; bin.Insert(0, r); dec = dec / 2; }

return bin.ToString(); }

int BinToDec(String bin) {

StringBuilder sb = new StringBuilder(Reverse(bin)); int n = 1;

int dec = 0; }

return dec; }

String StringToStb(String st, String c, String[] s) { StringBuilder stb = new StringBuilder();

}

int x = stb.Length % 8; int pad = 0;

}

String d = DecToBin(pad); int y = 8 - d.Length; return stb.ToString(); }

String Encode(String stb) {

StringBuilder code = new StringBuilder() }

return code.ToString(); }

String Decode(String code) { return sb.ToString();

}

void RiceCodes(String st, int k) { int[] freq = CountFreq(st); String charset = GetCharSet(st); int t = charset.Length;

InsertionSort(freq, charset); freq = fr;

charset = cs;

//MessageBox.Show(charset + " ," + t + " ");

rc = new String[t];

public String Decompress(string stb, String c, String[] s) {

StringBuilder st = new StringBuilder(); StringBuilder bit = new StringBuilder(); StringBuilder stb2;

return st.ToString(); }


(13)

public string RunRiceCodes(String st, int k) { RiceCodes(st,k);

//MessageBox.Show(st);

String stb = StringToStb(st, cs, rc); String code = Encode(stb);

return code; }

public string RunRiceCodes2(string code, string css, string[] rcc) {

string tes = Decode(code); //MessageBox.Show(tes);

return Decompress(tes,css,rcc); }

} }


(14)

LAMPIRANB:DAFTAR RIWAYAT HIDUP

DATAPRIBADI

Nama :Raja Arif Hidayah Harahap

Tempat/Tgllahir :Medan/7Juni1994

JenisKelamin :Laki-LakiUmur :22Tahun Tinggi,BeratBadan :178cm,87Kg

Agama :Islam

Alamat : Vila Gading Mas 1 Blok G.No-3

Status :BelumMenikah

No.Telepon :082273999460

Email

PENDIDIKANFORMAL

SDNegeri060924 Medan (1999-2005)

SMPNegeri2 Medan (2005-2008)

SMANegeri10 Medan (2008-2011)

D3TeknikInformatikaUniveristasSumateraUtara (2011-2014) EkstensiS1 Ilmu Komputer Universitas SumateraUtara (2014-2016 )

PENGALAMAN/KEGIATAN

PraktekKerjaLapangan(PKL)diJasa Raharja Putera ( 2013 )

Penyiar di Radio Sonya FM ( 2014 )

SeminarNasionalLiterasiInformasi(SENARAI), FakultasIlmu

KomputerdanTeknologiInformasi, Universitas Sumatera Utara (2014 )

Penyiar di Radio Mutiara FM ( 2015 )


(15)

DAFTAR PUSTAKA

Al Fatta, Hanif. 2007. Analisis dan Perancangan Sistem Informasi untuk Keunggulan

Bersaing Perusahaan dan Organisasi Modern. ANDI: Yogyakarta.

Ariyus, Doni. 2008. Pengantar Ilmu Kriptografi Teori Analisis dan Implementasi. ANDI: Yogyakarta.

Bennett, Simon., McRobb, Steve & Farmer, Ray. 2006. Object-Oriented System

Analysis And Design Using UML. McGraw-Hil: New York.

Kodituwakku, S.R. 2011. Comparison Of Lossless Data Compression Algorithms For

Text Data. Indian Journal of Computer Science and Engineering Vol 1 No 4:

416-426.

Kurniawan, Yusuf, Ir. 2004. Kriptografi Keamanan Internet dan Jaringan

Komunikasi. Informatika: Bandung.

Menezes, A., van Oorschot, P. & Vanstone, S. 1996. Handbook of Applied

Cryptography. CRC Press: USA.

Moffat, Alistair. & Turpin Andrew. 2002. Compression and Coding Algorithms. Springer: USA.

Mollin, Richard A. 2005. Codes:The Guide To Secrecy From Ancient To Modern

Times. Taylor & Francis Group: USA.

Mollin, Richard A. 2007. An Introduction to Crypthography Second Edition. Taylor & Francis Group: USA.

Munir, Rinaldi. 2006. Belajar Ilmu Kriptografi. Informatika: Bandung.

Nelson, M. & Gailly, J.L. 1996. The Data Compression Book, Second Edition. M&T Books: New York.

Putri, A.D. 2016. Analisis dan implementasi algoritma kriptografi playfair cipher dan algoritma kompresi run length encoding dalam pengamanan dan kompresi data teks. Skripsi. Universitas Sumatera Utara.

Sadikin, Rifki. 2012. Kriptografi untuk Keamanan Jaringan dan Implementasinya

dalam Bahasa Java. ANDI: Yogyakarta.

Salomon, David. 2007. Variable-Length Codes for Data Compression. Springer: USA.

Sarifah. 2010. Analisis kinerja dan implementasi algoritma kompresi arithmetic

coding pada file teks dan citra digital. Skripsi. Universitas Sumatera Utara.


(16)

Setiawati, Rayi. 2014. Implementasi keamanan file txt dan rtf dengan kombinasi algoritma kriptografi vigenere dengan steganografi least significant bit (LSB) pada gradasi titik hijau dalam file bmp. Skripsi. Universitas Sumatera Utara. Stinson, D.R. 2002. Crypthography: Theory and Practice. Chapman & Hall/CRC :

USA.

Tague, Nancy R. 2005. The Quality Toolbox. ASQ: USA.

Whitten, Jeffery L., Bentley, Lonnie D. & Dittman, Kevin C. 2004. Metode Desain dan Analisis Sistem. Terjemahan Tim Penerjemah ANDI. ANDI: Yogyakarta.


(17)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

Dalam bab ini, penulis memaparkan rangkuman masalah-masalah dalam mengimplementasikan sistem yang akan dibangun dengan menganalisis masalah-masalah tersebut terlebih dahulu, baik berupa diagram maupun flowchart.

3.1 Analisis Masalah

Analisis merupakan tahapan untuk mendefenisikan masalah – from requirements to

specification, sedangkan design yaitu tahapan untuk memecahkan masalah – from specification to implementation. Analisis sistem merupakan teknik pemecahan

masalah yang menguraikan bagian-bagian komponen dengan mempelajari seberapa bagus bagian-bagian komponen tersebut bekerja dan berinteraksi untuk mencapai tujuan mereka (Al Fatta, 2007).

Dalam melakukan pengiriman file melalui media internet pastinya banyak hal yang bisa terjadi, seperti file bisa disadap oleh stalker atau file dibaca oleh orang yang tidak diinginkan. Selain itu juga koneksi internet yang terbatas, maka membutuhkan

file dalam ukuran kecil agar file bisa dikirim dengan cepat.

Pada algoritma kriptografi Trithemius, ciphertext hasil enkripsinya lebih kurang akan sama panjang dengan plaintextnya. Oleh karena itu, file yang besar tentu saja ciphertext yang dihasilkan akan besar juga, sehingga sulit atau lambat untuk dikirim. Dengan demikian, diperlukan algoritma kompresi untuk meminimalkan ukuran dari file hasil enkripsi tersebut.

Untuk brainstorming dari kategori utama dalam penyebab masalah-masalah yang telah di uraikan, maka penulis menggunakan beberapa tujuan umum dalam mengidentifikasi masalah masalah dalam penulisan ini, yaitu sebagai berikut (Tague, 2005).


(18)

1. Man

Man yaitu sebagai user dimana masalah adalah keinginan user itu sendiri yang

menginginkan file aman namun juga berukuran kecil.

2. Method

Metode yang pas untuk memecahkan masalah dalam penulisan ini adalah mencoba algoritma yang pas, dalam hal ini penulis menggunakan algoritma Trithemius untuk kriptografinya dan algoritma Rice untuk pemampatan data.

3. Materials

Informasi penting dan rahasia tersimpan dalam suatu file. Dalam hal ini penulis menggunakan file teks dengan ekstensi .docx.

4. Machine

Permasalahan file yang tidak aman dan berukuran relatif besar karena belum menerapkan algoritma kriptografi dan juga algoritma kompresi pada file tersebut.

Untuk identifikasi masalah selanjutnya, dapat digambarkan dengan diagram Ishikawa, atau Fishbone diagram, sering juga disebut Cause and Effect Diagram, yang diperkenalkan oleh Dr. Kaoru Ishikawa, seorang ahli pengendalian kualitas dari Jepang. Diagram Ishikawa dapat mengidentifikasi beberapa sebab-akibat dari suatu masalah (Tague, 2005). Diagram Ishikawa untuk masalah dalam penulisan ini terdapat pada gambar 3.1.


(19)

Gambar 3.1 Analisis masalah dengan diagram Ishikawa

3.2 Analisis Kebutuhan Sistem

Dalam pembangunan suatu sistem, analisis kebutuhan sistem dapat membantu untuk memahami dengan sebenar-benarnya kebutuhan dari suatu sistem. Analisis kebutuhan sistem dibagi atas dua bagian yaitu kebutuhan fungsional (functional requirement) dan kebutuhan non-functional(Tague, 2005).

3.2.1 Kebutuhan Fungsional

Kebutuhan fungsional adalah requirement yang berisi proses-proses yang harus dilakukan sistem dan informasi-informasi yang harus ada di dalam sistem. (Tague, 2005). Untuk itu, kebutuhan fungsional yang harus dipenuhi dalam sistem ini adalah sebagai berikut:

1. Sistem harus mampu membaca string yang ada di dalam file yang akan di input.

2. Sistem harus mampu mengenkripsi setiap karakter yang ada pada string yang telah di baca sebelumnya dari file yang telah di input, sehingga menghasilkan hasil enkripsi dari algoritma Trithemius dan begitu juga untuk proses dekripsinya, untuk mengembalikan isi dari filetersebut menjadi teks aslinya.


(20)

3. Sistem harus mampu mengkompresi hasil dari enkripsi algoritma Trithemius dengan algoritma Rice, yang kemudian juga dapat melakukan dekompresi file tersebut.

4. Sistem dapat menghitung dan memperlihatkan beberapa parameter perbandingan setelah kompresi, seperti Ratio of Compression (Rc),

Compression Ratio (Cr) dan juga Space Savings.

5. Sistem dapat menghitung dan memperlihatkan berapa waktu yang dibutuhkan untuk melakukan enkripsi-dekripsi dan kompresi-dekompresi terhadap file yang di input (Running Time).

3.2.2 KebutuhanNon Functional

Kebutuhan non functionalmerupakan tipe requirementyang berisi properti perilaku yang dimiliki oleh sistem (Tague, 2005). Untuk kebutuhan non functional dalam sistem ini adalah sebagai berikut:

1. Operasional

Sistem dapat di terapkan pada berbagai macam sistem operasi, dengan RAM yang dibutuhkan minimal 512 MB ke atas dan processor Core ke atas. Dalam hal ini penulis menggunakan Microsoft Windows 7 dengan RAM 4 GB dan processor intel Core™ i3.

2. Performa

Sistem harus mampu melakukan setiap tugas secara baik dan utuh, yang mana sistem dapat menunjukkan hasil enkripsi-dekripsi maupun hasil setelah kompresi-dekompresinya.

3. Dokumentasi

Sistem harus mampu menyimpan file hasil dari enkripsi lalu kemudian file hasil dari kompresinya, begitu juga dengan setelah proses dekripsi maupun dekompresinya.

4. Ekonomis

Sistem harus mampu bekerja dengan baik tanpa harus mengeluarkan biaya tambahan yang cukup banyak dalam penggunaan perangkat lunak maupun penggunan perangkat keras.


(21)

5. Kontrol

Sistem yang sudah selesai dibangun tetap harus dikontrol demi untuk menjaga sistem agar tetap berjalan dengan baik sesuai dengan harapan pengguna.

6. User Friendly

Sistem yang akan dirancang harus user friendly atau mudah dalam penggunaannya untuk semua orang dengan tampilan atau interface yang sederhana dengan tombol-tombol dan tulisan yang mudah di mengerti.

7. Informasi

Sistem harus dapat menyampaikan sesuatu hal yang salah, misalnya format

filetidak di dukung (dalam hal ini sistem hanya membaca file berekstensi .docx

saja).

3.3 Pemodelan Sistem

Proses pemodelan sistem adalah cara formal bagaimana menggambarkan suatu sistem akan berjalan, mengilustrasikan aktivitas-aktivitas yang dilakukan dan bagaimana aktivitas tersebut berjalan (Tague, 2005). Pemodelan sistem yang penulis uraikan antara lain dengan menggunakan use case, activity diagram dan sequence diagram.

3.3.1 Pemodelan Use Case

Dalam industri pengembangan software, untuk meraih sukses perencanaan, analisis, desain, konstruksi dan penyebaran sistem informasi, analis sistem harus memahami kebutuhan user terhadap sistem yang akan dibangun tersebut, yang disebut dengan user-centered development atau pengembangan berpusatkan pada pengguna, yang membuat analis akan fokus pada bagaimana sistem digunakan bukan pada bagaimana sistem dibangun. Untuk itu, use-case modelling adalah pendekatan yang mengidentifikasi, memfasilitasi pengembangan berpusatkan kegunaan dan menggambarkan fungsi-fungsi sistem (Whitten, Bentley & Dittman, 2004).

Use case menambahkan detail untuk requirement yang telah dituliskan pada

analisis kebutuhan sistem (Tague, 2005). Untuk penggunaan use case dalam penelitian ini, dapat dilihat pada gambar 3.2.


(22)

Gambar 3.2 Use Case Enkrispi-Kompresi dan Dekompresi-Dekripsi

Untuk narasi dari use case pada gambar 3.2, dapat dilihat pada tabel 3.1, tabel 3.2, tabel 3.3 dan tabel 3.4 berikut.

Tabel 3.1 Narasi Use Case Enkripsi

Name Pengamanan File

Actor User

Precondition User telah memasukkan file

User telah memasukkan kunci Trithemius

Trigger User telah menekan tombol enkripsi

Normal Flow User memilih file .docx

User memasukkan kunci Trithemius

Hasil enkripsi tampil

Alternate Flow File salah, kembali ke menu pemilihan file

Post condition User dapat melihat ciphertext hasil enkripsi

Success Scenario User telah memasukkanfile

User telah memasukkan kunci Trithemius User telah menekan tombol enkripsi

Sistem akan melakukan proses enkripsi

User dapat melihat ciphertexthasil enkripsi


(23)

Name Kompresi File

Actor User

Precondition User telah memasukkan nilai k

Trigger User telah menekan tombol kompresi

Normal Flow User memasukkan nilai k yang diinginkan

Hasil kompresi tampil

Alternate Flow Nilai k harus dari rentang 1-8

Post condition User dapat melihat ciphertext hasil kompresi

Success Scenario User telah memasukkanfile

User telah memasukkan nilai k User telah menekan tombol kompresi

Sistem akan melakukan proses kompresi

User dapat melihat ciphertexthasil kompresi

Tabel 3.3 Narasi Use Case Dekompresi

Name Dekompresi

Actor User

Precondition User telah memasukkan filehasil enkripsi + kompresi

Trigger User telah menekan tombol dekompresi

Post condition User dapat melihat ciphertext hasil dekompresi

Success Scenario User telah memasukkanfilehasil enkripsi + kompresi

User telah menekan tombol dekompresi

Sistem akan melakukan proses dekompresi

User dapat melihat ciphertexthasil dekompresi

Tabel 3.4 Narasi Use Case Dekripsi

Name Dekripsi

Actor User

Precondition User telah memasukkan kunci Trithemius

Trigger User telah menekan tombol dekripsi

Normal Flow User memasukkan kunci Trithemius

Hasil dekripsi tampil

Post condition User dapat melihat plaintext hasil dekripsi

Success Scenario User telah memasukkankunci Trithemius

User telah menekan tombol dekripsi

Sistem akan melakukan proses dekripsi


(24)

3.3.2 Activity Diagram

Activity diagram digunakan untuk memodelkan aspek-aspek yang berbeda pada

sebuah sistem, juga digunakan pada tahap awal dalam system development lifecycle, yaitu dengan memodelkan sebuah fungsi sistem yang ditunjukkan oleh sebuah use

case, menggunakan aliran objek untuk menunjukkan objek mana yang terlibat dalam

sebuah use case. Activity diagram terdiri atas sekumpulan aksi yang dihubungkan bersama aliran dari satu aktivitas ke aktivitas lainnya, yang mana setiap aksi ditunjukkan sebagai persegi dengan sudut yang melingkar. Nama dari aksi ditulis di dalam simbol dua dimensi ini. Selanjutnya, untuk mendeskripsikan beberapa pilihan yang dapat diambil, digunakan explicit decision node, yang ditunjukkan dengan ikon berbentuk diamond(Bennett, McRobb, & Farmer, 2006).

Untuk activity diagram dalam penulisan ini, penulis membuat activity diagram untuk pengamanan file dan untuk kompresi file, seperti pada gambar 3.3 dan gambar 3.4 dan juga untuk proses dekompresi dan dekripsi pada gambar 3.5 dan 3.6.


(25)

Gambar 3.4. Activity Diagram Kompresi File


(26)

Gambar 3.6. Activity Diagram Dekripsi File

3.3.3 Sequence Diagram

Sebuah sequence diagram menunjukkan sebuah interaksi antara objek-objek yang disusun dalam urutan waktu. Kegunaan dari sequence diagram adalah menunjukkan interaksi objek secara rinci yang terjadi untuk satu use case.Dalam sequence diagram, dimensi vertikal menunjukkan waktu dan semua objek yang ikut terlibat dalam interaksi tersebar secara horizontal pada diagram. Waktu secara normal berjalan ke bawah(Bennett, McRobb, dan Farmer, 2006).

Untuk sequence diagram dalam penulisan ini, penulis membuat sequence

diagram untuk enkripsi-kompresi pada gambar 3.7 dan sequence diagram untuk


(27)

Gambar 3.7 Sequence Diagram Enkripsi-Kompresi

Gambar 3.8 Sequence Diagram untuk Dekompresi-Dekripsi

3.4 Perancangan Sistem

Untuk perancangan sistem, khususnya untuk cara kerja dari algoritma yang penulis gunakan, maka flowchart akan membantu menjelaskan alur dari berjalannya sistem yang akan dibuat.


(28)

3.4.1 Flowchart

Flowchart merupakan suatu bagan dengan simbol-simbol tertentu yang

menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses dengan proses lainnya dalam suatu program. Dalam membuat sistem yang akan dirancang, penulis menggunakan flowchart sistem untuk enkripsi (pada gambar 3.9), dekripsi (pada gambar 3.10), kompresi (pada gambar 3.11) dan dekompresi (pada gambar 3.12).

Gambar 3.9 Flowchart Enkripsi


(29)

Gambar 3.11 Flowchart Kompresi


(30)

(31)

(32)

(33)

3.5 Perancangan Interface

Untuk membangun suatu sistem agar lebih jelas untuk gambaran dari sistem yang akan dibuat, perlu dirancang untuk antar muka (interface) dari sistem tersebut. Dalam pembuatan interface yang baik, tampilan harus user friendly agar user mudah untuk menggunakan sistem yang akan dibuat.

Gambar 3.16 Rancangan tampilan awal aplikasi

Pada gambar 3.16 terdapat tampilan awal/home, dilengkapi dengan tampilan sederhana yang hanya menampilkan judul skripsi, NIM dan nama penulis yang disertai dengan logo FASILKOM-TI. Untuk menu pada tampilan awal terdapat beberapa pilihan seperti untuk dekripsi-kompresi maupun dekompresi-dekripsi, help dan juga about.

Nama Aplikasi

Menu Judul skripsi

NIM dan Nama penulis Logo


(34)

Gambar 3.17 Rancangan menu About

Pada gambar 3.17 menjelaskan tentang tampilan pada menu about, yang mana menjelaskan tentang kegunaan dari aplikasi ini dan juga sekilas tentang identitas penulis, sedangkan buttonbackuntuk kembali ke home.

Gambar 3.18 Rancangan tampilan menu Help Judul Window

About

Foto Penulis

Judul Window How to Use ...

Back


(35)

Gambar 3.18 menjelaskan tentang tampilan dari menu helpyang mana berisi tentang cara penggunaan dari aplikasi yang penulis rancang, sedangkan button back untuk kembali ke home.

Gambar 3.19 Rancangan menu enkripsi-kompresi

Untuk gambae 3.19 menjelaskan tentang rancangan dari tampilan menu enkripsi-kompresi. Pertama user akan memilih terlebih dahulu file teks yang akan di enkripsi, lalu akan muncul preview dari file tersebut. Setelah itu bisa langsung mengenkripsi dan terdapat button save untuk menyimpan file hasil enkripsi. Setelah di enkripsi ada button compress untuk mengkompresi file tersebut, sedangkan button back untuk kembali ke home.

Judul Window Insert File

Plaintext Insert Key

Ciphertext

Encrypt Choose

Compress

Save Back


(36)

Gambar 3.20 Rancangan menu dekompresi-dekripsi

Pada gambar 3.20 terdapat rancangan menu dekompresi-dekripsi yang sama saja dengan tampilan menu dekripsi-kompresi, hanya perbedaan di pemilihan file, yang mana dalam hal ini user memilih file yang telah di enkripsi-kompresi sebelumnya dan juga perbedaan pada nama button (decompression dan decryption).

Judul Window Insert File

Ciphertext

Plaintext

Decompression Choose

Decryption

Save Back


(37)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

Setelah menganalisis masalah dan juga merancang sistem yang akan penulis implementasikan, maka pada bab ini akan dibahas implementasi dan juga pengujian atas sistem tersebut.Software yang penulis gunakan adalah SharpDevelop 4.4 yang

compatible untuk bahasa pemrograman C#.

4.1.1 Interface Home

Pada Home/Halaman Utama dalam sistem yang penulis rancang terdapat beberapa menu seperti Action, About, Helpdan Exit. lengkap dengan judul skripsi juga nama dan NIM penulis seperti pada gambar 4.1.


(38)

Pada menu actionterdapat pilihan Encryption + Compression dan juga Decompression + Decryption seperti pada gambar 4.2.

Gambar 4.2 Sub Menu pada Action

4.1.2 Form Encryption + Compression

Dalam formEncryption + Compression seperti pada gambar 4.3 terdapat dua proses yaitu Encrypt dan juga Compress. Untuk melakukan kedua proses tersebut, user terlebih dahulu memilih dan memasukkan file teks berekstensi .docx.

Untuk melakukan enkripsi, terlebih dahulu memasukkan kunci Trithemius, setelah itu pilih Encrypt untuk proses enkripsi dan akan tampil running time dari proses enkripsinya pada label text parameter enkripsi. Selanjutnya bisa langsung menyimpan file hasil enkripsi atau lanjut memilih untuk proses kompresi. Untuk mengkompresi hasil enkripsi, terlebih dahulu nilai k yang ingin dicoba dimasukkan, yang mana setelahnya akan tampil parameter kompresi, pada label text parameter kompresi.


(39)

Gambar 4.3 Form Encryption + Compression

4.1.3 Form Decompression + Decryption

Pada form Decompression + Decryptionseperti pada gambar 4.4 userdapat memilih

file hasil enkripsi yang sebelumnya telah didapatkan, setelah itu user langsung dapat

melakukan dekompresi atau juga dekripsi.


(40)

4.1.4 Form About

Pada form about berisi sekilas tentang sistem yang penulis buat, yang penulis sebut dengan T-Comprerity. Selain itu juga terdapat sekilas tentang data diri penulis beserta foto penulis.

Gambar 4.5 Form About

4.1.5 Form Help

Untuk form helpakan menginformasikan usercara penggunaan dari T-Comprerity step by step secara singkat.


(41)

4.2 Pengujian Sistem

Dalam tahap pengujian sistem, sistem diuji untuk melihat kesesuaian dari sistem yang telah didesain dalam tahap perancangan sebelumnya. Pengujian dilakukan terhadap file berekstensi .docx, yang mana tahap pengujian terbagi atas dua bagian, yaitu pengujian enkripsi dan kompresi juga pengujian terhadap dekompresi dan dekripsi.

4.2.1 Pengujian Enkripsi dan Kompresi

Untuk memulai pengujian, terlebih dahulu memilih menu Encryption + Compression. Selanjutnya, ikuti langkah berikut ini:

1. Pilih file berekstensi .docx yang akan di enkripsi, seperti pada gambar 4.7, jika bukan file .docx, maka akan tampil seperti gambar 4.8.

Gambar 4.7 Memilih file .docx


(42)

2. Setelah isi dari file yang telah dipilih tampil pada textbox, masukkan kunci Trithemius pada textbox ‘Key’ sesuai dengan kunci yang dimaksud seperti pada gambar 4.9. Tekan button ‘Encrypt’untuk mengenkripsi teks maka akan terlihat running time dari proses enkripsi tersebut. Hasilnya seperti pada gambar 4.10.

Gambar 4.9 Memasukkan kunci Trithemius


(43)

3. Setelah teks dienkripsi, teks tersebut bisa langsung di save dengan memilih

button ‘Save’ atau bisa langsung melanjutkan ke proses kompresi dengan

memilih button compres, yang terlebih dahulu harus memasukkan nilai k yang tepat sesuai dengan nilai k yang ingin user coba (mulai dari 1, 2 dan seterusnya, seperti pada gambar 4.11).

Gambar 4.11 Memasukkan nilai k

4. Hasil dari kompresi pada gambar 4.12 dapat langsung di-save dan kemudian di-dekompresi lagi untuk proses selanjutnya pada menu Decompression +


(44)

Gambar 4.12 Hasil Kompresi

4.2.2 Pengujian Dekompresi dan Dekripsi

Setelah file hasil kompresi tersimpan, kembali ke home dan pilih untuk menu

decompression + decryption, lalu ikuti langkah berikut:

1. Pilih file hasil kompresi yang telah dilakukan sebelumnya (penulis membuat ekstensinya .rc atau singkatan dari RiceCode) seperti pada gambar 4.13. Setelah isi filetertampil dalam text box, pilih buttonDecompress, maka akan tampil seperti pada gambar 4.14.


(45)

Gambar 4.14 Hasil dekompresi

2. Untuk membuat teks kembali ke teks aslinya, user dapat memilih

buttonDecrypt untuk proses dekripsi file tersebut dengan kembali lagi

memasukkan kunci Trithemius yang sama pada Gambar 4.9, maka ciphertext pun akan kembali lagi menjadi plaintext seperti pada Gambar 4.15.


(46)

4.2.3 Pengujian dengan semua nilai k

Untuk mengetahui pengaruh nilai k terhadap parameter kompresi, maka dilakukan pengujian yang dimulai dari 1 – 8.


(47)

Gambar 4.17 Pengujian nilai k 7 – 8

Dari gambar 4.16 dan 4.17 dapat dilihat perbedaan hasil dari setiap parameter kompresi dengan nilai k yang berbeda, seperti pada tabel 4.1.

Tabel 4.1 Tabel nilai k dengan parameter kompresi

Nilai k Ratio of Compression Compression Ratio Space Savings Running Time

1 0,761 1,428 -42,487 % 12 ms

2 1,066 0,937 6,217 % 8 ms

3 1,312 0,761 23,943 % 32 ms

4 1,368 0,730 26,943 % 8 ms

5 1,269 0,787 21,243 % 8 ms

6 1,135 0,880 11,917 % 6 ms

7 0,994 1,005 - 0,518 % 32 ms


(48)

4.2.4 Waktu enkripsi Trithemius

Pada gambar 4.10, terdapat hasil waktu enkripsi dengan algoritma Trithemius 0 ms, untuk mengetahui lebih jelasnya, penulis mencoba melakukan uji coba dengan memasukkan sejumlah karakter mulai dari 20 karakter sampai 1000. Hasilnya seperti pada gambar 4.18 dan tabel 4.2.

Gambar 4.18 Pengujian Waktu Enkripsi dengan Berbagai Jumlah Karakter

Tabel 4.2 Hasil Pengujian Waktu Enkripsi dengan Sejumlah Karakter

Panjang Plaintext (Karakter)

Waktu Enkripsi (ms)

1 10 0 ms

2 30 0 ms

3 50 0 ms

4 100 0 ms

5 200 1 ms

6 300 2 ms

7 400 4 ms

8 500 6 ms

9 600 7 ms

10 700 9 ms

11 800 11 ms

12 900 13 ms


(49)

Dari tabel 4.2, maka dapat disimpulkan bahwa waktu enkripsi tergantung dari panjang

plaintext, dimana θ(n) dari waktu enkripsi Trithemius tersebut adalah sebagai berikut:

Tabel 4.3 Tabel θ(n) Enkripsi Trithemius

Kode Program C # C . #

1 char[]arraykey C1 1 C1

2 char[]arrayplaintext C1 1 C1

3 char[]arrayciphertext C1 1 C1

4 int p,k,c; C2 1 C2

5 for(int i=0;i<arrayplaintext.length;i++) { C3 n C3n 6 if(arraylaintext[i]==’j’...) { C4 n C4n 7 arrayciphertext[i] = arrayplaintext[i]; C5 n C5n

8 continue; C6 n C6n

9 if(getindex(arrayplaintext[i]==-1) { C4 n C4n 10 arrayciphertext[i] = arrayplaintext[i]; C5 n C5n

11 continue; C6 n C6n

12 p= getindex(arrayplaintext[i]); C5 n C5n

13 k= getindex(arraykey[i]); C5 n C5n

14 c= (p+k) % index.Length; C5 n C5n

15 arrayciphertext[i]=getcharacter(c); C5 n C5n

16 string hasil C7 1 C7

17 return hasil C8 1 C8


(50)

BAB 5 KESIMPULAN

5.1 Kesimpulan

Berdasarkan hasil yang telah penulis rangkum dalam tahap analisis dan perancangan serta tahap implementasi sistem, dapat disimpulkan bahwa :

1. Sistem yang telah dirancang mampu mengubah plaintext menjadi ciphertext dan begitu juga sebaliknya dengan menggunakan algoritma Trithemius.

2. Sistem yang telah dirancang mampu mengkompresi ciphertext dan mendekompresi hasil kompresi tersebut dengan algoritma Rice.

3. Dapat dilihat dari running time pada saat enkripsi (pada Bab 4), untuk

plaintext yang digunakan,running time algoritma Trithemius tergantung dari

panjang karakter pada plaintext. Secara teoritis dengan θ(n) dimana n adalah panjang plaintext.

4. Dari hasil uji coba terhadap nilai k (pada Bab 4), bahwa nilai k yang efesien untuk mengkompresi dengan algoritma Rice yaitu k = 4, dengan hasil space


(51)

5.2 Saran

Setelah menyelesaikan penelitian ini, maka saran-saran yang dapat penulis berikan untuk pengembangan dan perbaikan sistem ini adalah sebagai berikut :

1. Sistem yang akan dibangun sebaiknya dapat di implementasikan pada semua jenis fileteks lainnya, agar dapat mengetahui filejenis apa yang paling cocok digunakan untuk melakukan kompresi dengan algoritma Rice dan mengamankan file dengan algoritma Trithemius.

2. Sistem yang akan dibangun sebaiknya dapat di implementasikan pada jenis file lain, misalnya pada file audio ataupun gambar, agar menjadi perbandingan dengan tipe file teks.

3. Dalam pengujian penulis, apabila k = 1, hasil space savings menjadi minus, untuk penelitian selanjutnya bisa dikembangkan dan mengetahui lebih lanjut mengapa hal tersebut bisa terjadi.


(52)

BAB 2

TINJAUAN PUSTAKA

2.1 Kriptografi

Krpitografi berasal dari bahasa Yunani, yang terdiri dari kata kryptos yang berarti tersembunyi dan graphein yang berarti menulis. Kriptografi merupakan pembelajaran teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, otentikasi entitas dan otentikasi data asal. Kriptografi bukan hanya membahas soal keamanan informasi, tetapi juga lebih dari satu kesatuan teknik (Menezes, van Oorschot&Vanstone, 1996).

Kriptografi adalah ilmu yang mempelajari tentang cara mengirim pesan rahasia (yaitu yang terenkripsi atau disamarkan) sehingga hanya penerima yang dimaksud saja yang dapat menghilangkan pesan yang disamarkan tersebut dan membacanya atau yang dapat mendekripsi pesan tersebut.

Pesan asli dalam pesan rahasia tersebut disebut plaintext sedangkan pesan yang disamarkan disebut ciphertext. Pesan yang dikirim disebut tulisan rahasia (crypthogram) dan proses mengubah dari plaintext menjadi ciphertext disebut proses enkrpsi, sedangkan proses membalikkan dari ciphertext menjadi plaintext yang hanya dapat dilakukan oleh penerima yang dimaksud disebut proses dekripsi (Mollin, 2007).

Kriptografi mempunyai sejarah yang sangat panjang. Sejak zaman Romawi, Yulius Caesar telah menggunakan teknik kriptografi yang sekarang dianggap kuno dan sangat mudah dibobol untuk keperluan militernya. Pada perang dunia kedua, Jepang dan Jerman menggunakan kriptografi untuk keperluan komunikasi militernya. Namun sekutu dapat menembus Enigma, kriptografi produk Jerman dan Purple, kriptografi produk Jepang. Dengan terpecahkannya kedua kriptografi tersebut, sekutu pun akhirnya memenangkan perang dunia tersebut.

Untuk 30 tahun terakhir, penelitian akademik dalam bidang kriptografi meledak dengan begitu dahsyatnya. Kemajuan teknologi komputer menambah


(53)

cepatnya perkembangan kriptografi. Bukan hanya untuk keperluan militer, namun setiap individu berhak untuk mengamankan komunikasinya agar tidak dimata-matai pihak yang tidak diinginkan (Kurniawan, 2004).

Kriptografi pada awalnya dijabarkan sebagai ilmu yang mempelajari bagaimana meyembunyikan pesan. Kriptografi modern adalah ilmu yang bersandarkan pada teknik matematika untuk berurusan dengan keamanan informasi seperti kerahasiaan, keutuhan data dan otentikasi entitas. Jadi pengertian kriptografi modern tidak saja berurusan hanya dengan penyembunyian pesan namun lebih pada sekumpulan teknik yang menyediakan keamanan informasi (Sadikin, 2012).

2.2 Tujuan Dasar Kriptografi dalam Aspek Keamanan

Kriptografi tidak hanya memberikan kerahasiaan dalam berkomunikasi, namun juga melibatkan sejumlah aspek yang dikenal dengan aspek keamanan, yaitu sebagai berikut (Menezes, van Oorschot&Vanstone, 1996):

1. Privacy of Confidentiality : Menjaga kerahasiaan informasi yang hanya dapat

diketahui oleh pihak yang berhak untuk melihatnya.

2. Data Integrity : Memastikan informasi yang akan disampaikan, apakah pesan

telah dimodifikasi atau tidak dari orang-orang yang tidak berwenang dalam hal tersebut.

3. Entity Authentication or Identification : Pembuktian identitas dari entitas

(misal : seseorang, terminal komputer, kartu kredit, dll) agar lebih autentik. 4. Message Authentication : Memastikan sumber informasi yang diperoleh.

5. Signature : Sarana untuk mengikat informasi terhadap entitas.

6. Authorization : Pernyataan yang menandakan adanya sanksi secara resmi

apabila ada suatu hal yang melanggar hak cipta.

7. Validation : Sarana untuk menyediakan otorisasi/hak cipta yang aktual untuk

digunakan atau memanipulasi sumber informasi.

8. Access Control : Membatasi akses hanya untuk entitas yang diutamakan saja.

9. Certification : Dukungan informasi dari entitas yang terpercaya.

10. Timestamping : Merekam waktu pembuatan dari adanya informasi.

11. Witnessing: Verifikasi bahwa pembuatan dari adanya informasi tersebut

berasal dari sebuah entitas atau pembuat yang lain. 12. Reciept : Pernyataan bahwa informasi telah diterima.


(54)

13. Confirmation : Pernyataan bahwa layanan telah tersedia.

14. Ownership : Sarana untuk menyediakan entitas dengan hak yang sah untuk

menggunakan atau mengirim sumber informasi.

15. Anonymity : Menyembunyikan informasi dari entitas yang terlibat dalam

beberapa proses.

16. Non-repudiation : Pengirim seharusnya tidak dapat mengelak bahwa dialah

pengirim pesan yang sesungguhnya. Tanpa kriptografi, seseorang dapat mengelak bahwa dia yang mengirim email yang sesungguhnya.

17. Revocation : Pencabutan sertifikasi.

Suatu algoritma dapat dikatakan aman, apabila tidak ada cara ditemukan

plaintext-nya, namun selalu ada saja kemungkinan ditemukannya cara baru untuk

menembus algoritma kriptografi. Oleh karena itu, algoritma kriptografi dapat dikatakan “cukup” atau “mungkin” aman, jika memiliki keadaan sebagai berikut (Kurniawan, 2004):

1. Bila harga untuk menjebol algoritma lebih besar daripada nilai informasi yang dibuka, maka algoritma itu cukup aman.

2. Bila waktu yang digunakan untuk membobol algoritma tersebut lebih lama daripada lamanya waktu yang diperlukan oleh informasi tersebut harus tetap aman, maka algoritma tersebut mungkin aman.

3. Bila jumlah data yang dienkripsi dengan kunci dan algoritma yang sama lebih sedikit dari jumlah data yang diperlukan untuk menembus algoritma tersebut, maka algoritma itu aman.

2.3 Perkembangan Kriptografi

Perkembangan algoritma kriptografi terbagi menjadi dua, yaitu kriptografi klasik dan kriptografi modern.

2.3.1 Kriptografi Klasik

Kriptografi klasik telah dipakai sebelum era komputer. Kriptografi klasik umumnya merupakan teknik penyandian dengan kunci simetrik dan menyembunyikan pesan yang memiliki arti ke sebuah pesan yang nampaknya tidak memiliki arti (Sadikin, 2012).


(55)

C Saluran Publik

Saluran Aman

Gambar 2.1 Sistem Kriptografi Klasik

Berdasarkan Gambar 2.1, sistem kriptografi terbagi atas 5 bagian (Stinson, 2002): 1. Plaintext: pesan atau data dalam bentuk aslinya, yaitu masukan bagi algoritma

enkripsi.

2. Secret Key: masukan bagi algoritma enkripsi yang merupakan nilai yang bebas

terhadap teks asli dan menentukan hasil keluaran algoritma enkripsi.

3. Ciphertext: merupakan keluaran algoritma enkripsi. Dianggap sebagai pesan

dalam bentuk tersembunyi.Algoritma enkripsi yang baik akan menghasilkan

ciphertext yang terlihat acak.

4. Algoritma Enkripsi: Memiliki dua masukan teks asli dan kunci rahasia. Algoritma enkripsi melakukan transformasi terhadap teks asli sehingga menghasilkan teks sandi.

5. Algoritma Dekripsi: Memiliki dua masukan yaitu teks sandi dan kunci rahasia. Algoritma dekripsi memulihkan kembali teks sandi menjadi teks asli bila kunci rahasia yang dipakai algoritma dekripsi sama dengan kunci rahasia yang dipakai algoritma enkripsi.

Alice M

K

Bob M

K Algoritma

Dekripsi Algoritma

Enkripsi

Sumber Kunci


(56)

Kriptografi klasik memiliki beberapa ciri sebagai berikut (Ariyus, 2008) : 1. Berbasis karakter.

2. Menggunakan cara manual saja, belum ada komputer. 3. Termasuk dalam kriptografi kunci simetri.

Adapun alasan mempelajari kriptografi klasik adalah (Ariyus, 2008) : 1. Memahami konsep dasar kriptografi.

2. Dasar algoritma kriptografi modern. 3. Memahami kelemahan sistem kode.

2.3.1.1 Teknik Subtitusi dan Transposisi

Pada kriptografi klasik, teknik cipher yang digunakan adalah teknik substitusi dan teknik transposisi. Teknik substitusi adalah penggantian setiap karakter plaintext dengan karakter lain, sedangkan teknik transposisi adalah teknik yang menggunakan permutasi karakter (Kurniawan, 2004).

Dalam teknik substitusi, elemen pada pesan (karakter byte atau bit) ditukar dengan elemen lain dari ruang pesan. Misalnya A ditukar menjadi B, B menjadi D, dan C menjadi Z, maka “BACA” akan menjadi “DBZB” (Sadikin, 2012). Subtitusi

cipher dikelompokkan kedalam empat jenis, yaitu sebagai berikut:

1. Cipher Alfabet-Tunggal (Monoalphabetic): Disebut juga cipher subtitusi

sederhana, dimana satu huruf di plaintext diganti dengan tepat satu huruf

ciphertext, yang disebut juga fungsi satu-ke-satu (Munir, 2006). Untuk proses

dekripsi dari cipher ini juga sama namun kebalikannya, misalnya pada enkripsi diganti dengan satu huruf pada ciphertext setelahnya, maka pada dekripsinya pada satu huruf sebelumnya. Cipher yang paling terkenal dari jenis ini adalah cipher milik Julius Caesar, yaitu Caesar Cipher.

2. Cipher Alfabet-Majemuk (Polyalphabetic): Merupakan cipher subtitusi ganda

yang melibatkan penggunaan kunci berbeda (Munir, 2006). Cipher

Polyalphabetic pertama kali diperkenalkan oleh Leon Battista Alberti pada

tahun 1467, dimana Alberti hanya menggunakan 20 huruf yang digambarkan dalam Alberti Disk (Mollin, 2005). Dari penemuan Alberti inilah awal mulanya algoritma Trithemius.


(57)

3. Cipher Substitusi Homofonik(homophonic substitution cipher): Yang

membedakan antara Homophonic dengan Monoalphabetic hanya setiap huruf dalam plaintext yang dapat dipetakan kedalam salah satu dari unit ciphertext yang mungkin, dimana setiap huruf plaintext dapat memiliki lebih dari satu kemungkinan unit ciphertext. Huruf yang paling sering muncul dalam teks mempunyai lebih banyak pilihan unit ciphertext, jadi fungsi ciphering-nya memetakan satu-ke-banyak (one-to-many) (Munir, 2006).

4. Cipher Substitusi Poligram(polygram substitution cipher): dimana setiap unit

huruf disubstitusi dengan unit huruf ciphertext (Munir, 2006).

Dalam teknik transposisi, teknik ini menggunakan permutasi karakter, yang mana dengan menggunakan teknik ini pesan yang asli tidak dapat dibaca kecuali orang yang memiliki kunci untuk mengembalikan pesan tersebut ke bentuk semula. (Ariyus, 2008).

2.3.1.2 Contoh Kriptografi Klasik

Yang termasuk dalam kriptografi klasik adalah sebagai berikut (Ariyus, 2008).

1. Caesar Cipher, merupakan subtitusi kode pertama yang ditemukan oleh Yulius

Caesar, dengan metode mengganti posisi huruf awal dari alfabet, atau disebut juga sebagai algoritma ROT3. Metode ini menggeser huruf dilakukan sebanyak tiga kali. Misalnya, huruf A menjadi D, B menjadi E, dan seterusnya.

Caesar Cipher dipecahkan dengan cara brute force attack, atau serangan

dengan mencoba-coba berbagai kemungkinan untuk menemukan kunci. Selain itu bisa juga dengan melihat frekuensi kemunculan huruf.

2. Shift Cipher, merupakan teknik subtitusi kode geser (shift) dengan modulus 26,

dengan memberi angka pada setiap alfabet, yang dimulai dengan huruf A sama dengan 0, B sama dengan 1 sampai Z sama dengan 25.Untuk mendapatkan

ciphertext, menggunakan kunci 11. Misalnya A=0, ditambahkan dengan kunci

yaitu 11, maka hasil ciphertext dari A adalah 11. Apabila lebih dari 25, maka dikurangi dengan 26, misalnya huruf W = 22 + 11 = 33 – 26 = 7.

3. Hill Cipher, yang ditemukan pada tahun 1929 oleh Lester S.Hill, yang


(58)

4. Vigenere Cipher, yang dipublikasikan oleh Blaise de Vigenere pada tahun

1586, yang juga termasuk dalam kripto polialfabetik. Teknik subtitusi Vigenere ini menggunakan dua metode, yaitu angka dan huruf. Vigenere

Chiperberhasil dipecahkan oleh Babbage dan Kasiski pada pertengahan abad

19. Vigenere Cipher ini cukup mirip dengan pendahulunya yaitu Kode Trithemius (yang penulis bahas dalam penulisan ini).

5. Playfair Cipher, ditemukan oleh Sir Charles Wheatstone dan Baron Lyon

Playfair pada tahun 1854 dan digunakan pertama kali oleh tentara inggris pada Perang Boer (Perang Dunia I). Adapun kuncinya menggunakan matriks 5x5 dengan masukan yang terdiri dari 25 huruf (menghilangkan huruf j).

6. One Time Pad, yang dikenal dengan algoritma kriptografi klasik yang cukup

aman dan lebih baik dari algoritma sebelumnya. One Time Pad ditemukan oleh Mayor J. Maugborne dan G. Vernam pada tahun 1917, yang mana berisi deretan karakter kunci yang dibangkitkan secara acak.

2.3.2 Kriptografi Modern

Enkripsi modern berbeda dengan enkripsi konvensional. Enkripsi modern sudah menggunakan komputer untuk pengoperasiannya, berfungsi untuk mengamankan data baik yang ditransfer melalui jaringan komputer maupun yang bukan. Hal ini sangat berguna untuk melindungi privacy, data integrity, authentication dan non-repudiation. Algoritma modern lebih fokus kepada tingkat kesulitan algoritma juga pada kunci yang digunakan, sehingga butuh dasar pengetahuan terhadap matematika. Macam-macam algoritma menurut kuncinya adalah algoritma simetris dan algoritma asimetris.

2.3.2.1 Algoritma Simetris

Algoritma simetris disebut juga sebagai algoritma konvensional, yaitu algoritma yang menggunakan kunci yang sama untuk proses enkripsi dan dekripsinya. Keamanan algoritma simetris tergantung pada kuncinya.

Algoritma simetris sering juga disebut algoritma kunci rahasia, algoritma kunci tunggal atau algoritma satu kunci. Algoritma yang termasuk pada algoritma simetris ini adalah algoritma block cipher dan stream cipher.

Algoritma block cipher adalahalgoritma yang masukan dan keluarannya berupa satu block dan setiap block-nya terdiri dari banyak bit, sedangkan algoritma


(59)

stream cipher adalah cipher yang berasal dari hasil XOR antara bit plaintext dengan

setiap bit kuncinya (Prayudi, 2005).

Adapun beberapa contoh penggunaan dari algoritma simetris adalah sebagi berikut (Ariyus, 2008).

1. Algoritma DES (Data Encryption Standard), merupakan algoritma yang paling banyak dipakai di dunia yang diadopsi oleh NIST (Nasional Institute of

Standards and Technology) sebagai standar pengolahan informasi Federal AS.

DES merupakan riset dari IBM untuk proyek dari Lucifer, yang dipimpin oleh Horst Feistel, yang dimulai dari akhir tahun 1960 dan berakhir pada tahun 1971, yang kemudian proyek Lucifer disebut dengan DES yang dipimpin oleh Walter Tuchman. DES termasuk sistem kriptografi simetri dan tergolong jenis blok kode yang beroperasi pada ukuran blok 64 bit.

2. Advanced Encryption Standard (AES), yang merupakan blok kode simetris

untuk menggantikan DES, yang dipublikasikan oleh NIST pada tahun 2001. AES mempunyai kunci 128, 192 dan 256 bit.

3. International Data Encryption Standard (IDEA), yang merupakan revisi dari Propose Encryption Standard (PES) pada tahun 1992. IDEA menggunakan confusion (konfusi) dan diffusion (difusi), berbeda dengan DES dari kunci

yang mempunyai panjang 128 bit dibangkitkan 52 upa-kunci. Algoritma IDEA menggunakan 52 upa-kunci dan 16 bit kunci per blok. IDEA menggunakan aljabar yang tidak kompatibel seperti XOR, penambahan modulo 216 perkalian modulo 216 + 1 (operasi ini menggantikan kotak-S).

4. A5. 5. RC4.


(60)

2.3.2.2 Algoritma Asimetris

Algoritma asimetris atau biasa disebut algoritma kunci publik dirancang sedemikian sehingga kunci yang digunakan untuk mengenkripsi dan mendekripsi berbeda.Kunci dekripsi tidak dapat dihitung dari kunci enkripsi, karena kunci enkripsi dapat dibuat secara public yang dapat diakses semua orang, namun hanya orang tertentu dengan kunci dekripsi yang sama dapat mendekripsi pesan tersebut, yang disebut sebagai

public key sedangkan kunci dekripsi sering disebut sebagai private key (Prayudi,

2005).

Contoh dari algoritma asimetris adalah algoritma RSA, yang dibuat oleh tiga orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976 yaitu Ron (R)iverst, Adi (S)hamir dan Leonard (A)dleman. Algoritma ini melakukan pemfaktoran bilangan yang sangat besar. Oleh karena alasan tersebut RSA dianggap aman. Untuk membangkitkan dua kunci, dipilih dua bilangan prima acak yang besar.

2.4 Trithemius

Algoritma Trithemius adalah kelanjutan dari cipher polyalphabetic oleh Alberti, dimana Johannes Trithemiusmenggunakan sebuah tabel alfabet untuk membantu dalam enkripsi dan dekripsi cipher polyalphabetic, yang mana hal tersebut dijelaskan dalam bukunya Polygraphia (yang merupakan judul official dari buku karya Trithemius, yang diterbitkan pada 15 Desember 1516), dimana Polygraphia merupakan buku kriptografi pertama kalinya pada masa itu (Mollin, 2005).


(61)

Tabel 2.1. Trithemius (Mollin, 2005)

a b c d e f g h i k l m n o p q r s t u w x y z a A B C D E F G H I K L M N O P Q R S T U W X Y Z b B C D E F G H I K L M N O P Q R S T U W X Y Z A c C D E F G H I K L M N O P Q R S T U W X Y Z A B d D E F G H I K L M N O P Q R S T U W X Y Z A B C e E F G H I K L M N O P Q R S T U W X Y Z A B C D f F G H I K L M N O P Q R S T U W X Y Z A B C D E g G H I K L M N O P Q R S T U W X Y Z A B C D E F h H I K L M N O P Q R S T U W X Y Z A B C D E F G i I K L M N O P Q R S T U W X Y Z A B C D E F G H k K L M N O P Q R S T U W X Y Z A B C D E F G H I l L M N O P Q R S T U W X Y Z A B C D E F G H I K m M N O P Q R S T U W X Y Z A B C D E F G H I K L n N O P Q R S T U W X Y Z A B C D E F G H I K L M o O P Q R S T U W X Y Z A B C D E F G H I K L M N p P Q R S T U W X Y Z A B C D E F G H I K L M N O q Q R S T U W X Y Z A B C D E F G H I K L M N O P r R S T U W X Y Z A B C D E F G H I K L M N O P Q s S T U W X Y Z A B C D E F G H I K L M N O P Q R t T U W X Y Z A B C D E F G H I K L M N O P Q R S u U W X Y Z A B C D E F G H I K L M N O P Q R S T w W X Y Z A B C D E F G H I K L M N O P Q R S T U x X Y Z A B C D E F G H I K L M N O P Q R S T U W y Y Z A B C D E F G H I K L M N O P Q R S T U W X z Z A B C D E F G H I K L M N O P Q R S T U W X Y

Pada Alberti Disc dalam cipher polyalphabetic menggunakan 20 huruf, maka dalam Tabel Trithemius menggunakan 24 huruf, menghilangkan huruf j dan v (Seperti pada tabel 2.1).


(62)

Untuk gambaran dari penggunaan tabel 2.1, misalkan plaintext nya adalah

maximilian. Untuk huruf pertama yaitu m, lihat baris pertama tepat dibawah huruf m,

huruf tersebut adalah M. Untuk huruf a, lihat baris kedua pada kolom huruf a, huruf tersebut adalah B. Untuk huruf x, lihat baris ketiga pada kolom huruf x, maka huruf yang didapat adalah huruf Z, dan begitu juga seterusnya, sehingga akan dihasilkan

ciphertext MBZMQORQIX (Mollin, 2005).

Apabila memiliki panjang plaintext yang lebih dari 24 huruf, maka dapat menggunakan modulo 24. Setelah penemuan dari Trithemius inilah muncul yang disebut sebagai tabel Vigenere yang ditemukan oleh Blaise de Vigenere, dimana terinspirasi dari tabel yang dibuat oleh Trithemius. Bedanya pada tabel Vigenere, menggunakan tabel 26 x 26, yang dikenal dengan Tabula Recta.

Sebagai contoh, misalkan terdapat plaintext “golombrice” dengan kunci “kripto”, maka proses enkripsi dari pesan “golombrice” dengan kunci “kripto” menggunakan tabel trithemius adalah sebagai berikut (Mollin, 2005):

1. Buatlah plaintext dalam satu baris.

2. Kemudian letakkan kunci tepat diatas baris plaintext.

3. Lalu lihat pada tabel trithemius pertemuan huruf antara plaintext dan kunci, maka huruf tersebut adalah ciphertext-nya.

Maka hasilnya sebagai berikut.

k r i p t o k r i p

g o l o m b r i c e

Q F T D F P B A L T

Hasil enkripsinya dihasilkan ciphertext QFTDFPBALT. Untuk dekrpisnya sama seperti langkah di atas, namun letakkan ciphertext nya berada ditengah, sehingga:

k r i p t o k r i p

Q F T D F P B A L T


(63)

Untuk memudahkan dalam mengimplementasikan algoritma Trithemius ke dalam bahasa pemrograman yang penulis gunakan, maka tabel 2.1 diubah ke dalam bentuk

array seperti pada tabel 2.2.

Tabel 2.2 Tabel Trithemius dalam bentuk array

a b c d e f g h i k l

0 1 2 3 4 5 6 7 8 9 10

m n o p q r s t u w x

11 12 13 14 15 16 17 18 19 20 21

y z

22 23

Dalam tabel 2.2, Trithemius hanya menggunakan 24 huruf saja dan tidak memperdulikan huruf besar atau kecil, ataupun angka-angka maupun simbol-simbol. Oleh karena itu, penulis memodifikasi tabel Trithemius dengan tetap menggunakan 24 huruf yang sama, namun di tambah dengan huruf kecil dan huruf besar, kemudian disertai dengan angka 0-9 dan juga simbol seperti “spasi”, “.”, “,” dan “!”. Pada tabel 2.3 adalah tabel array untuk Trithemius yang telah penulis modifikasi.

Tabel 2.3 Modifikasi Tabel Trithemius dalam bentuk array

a b c d e f g h i k l

0 1 2 3 4 5 6 7 8 9 10

m n o p q r s t u w x


(64)

y z A B C D E F G H I

22 23 24 25 26 27 28 29 30 31 32

K L M N O P Q R S T U

33 34 35 36 37 38 39 40 41 42 43

W X Y Z 0 1 2 3 4 5 6

44 45 46 47 48 49 50 51 52 53 54

7 8 9 sp . , !

55 56 57 58 59 60 61

2.5 Kompresi Data

Kompresi adalah proses mengkonversikan sebuah aliran input data (sumber aliran data, atau asli) menjadi aliran data lainnya (aliran data dalam bentuk bit, atau output data yang telah dipadatkan) yang memiliki ukuran lebih kecil (Salomon, 2007).

Sedangkan kompresi data adalah cara untuk mengurangi jumlah bit pada data dalam penyimpanan, sehingga membuat lebih efisien dalam penyimpanan ataupun dalam pertukaran data tersebut (Nelson & Gailly 1996). Dalam kompresi data terdapat metode yang dikelompokkan menjadi dua bagian yaitu metode lossless dan metode

lossy.

2.5.1 Metode Lossless

Kompresi data lossless adalah metode yang tidak menyebabkan kehilangan informasi pada data yng telah dikompresi. Data asli dapat kembali didapatkan tepat seperti sebelum dilakukan proses kompresi (Sayood, 2006).

Metode lossless digunakan dalam berbagai aplikasi seperti format ZIP dan GZIP. Lossless juga sering digunakan sebagai komponen dalam teknologi kompresi data lossy, yang digunakan ketika sesuatu yang penting pada kondisi aslinya. Beberapa format gambar sperti PNG atau GIF hanya menggunakan kompresi lossless,


(65)

sedangkan yang lainnya sperti TIFF dan MNG dapat menggunakan metode lossy atau juga lossless.

Metode lossless menghasilkan data yang identik dengan data aslinya, hal ini dibutuhkan untuk banyak tipe data, seperti executable code, word processing files,

tabulated numbers dan sebagainya. Kompresi lossless diperlukan untuk data teks dan file, seperti catatan bank, artikel teks dll.

Misalkan pada suatu citra atau gambar, dimana metode ini akan menghasilkan hasil yang sama persis dengan citra semula, pixel per pixel sehingga tidak ada informasi yang hilang akibat kompresi, namun untuk rasio kompresi (yaitu, ukuran

file yang dikompresi dibanding ukuran file sebelum dikompresi) dengan metode ini

sangat rendah. Metode kompresi ini cocok untuk kompresi citra yang mengandung informasi penting yang tidak boleh rusak/hilang akibat kompresi, misalnya gambar hasil diagnosa medis (Nelson, 1996).

Beberapa contoh algoritma kompresi lossless adalah sebagai berikut (Sayood, 2006).

1. Algoritma Huffman, yang ditemukan oleh David Huffman, dapat digunakan untuk kompresi gambar dan suara lossless serta kompresi teks.

2. Algoritma Arithmetic Code, dapat digunakan untuk metode lossless maupun

lossy.

3. Golomb Code dan Rice Code.

2.5.2 Metode Lossy

Metode kompresi lossy yaitu metode yang menyebabkan kehilangan beberapa informasi dan data yang telah dikompresi dengan menggunakan metode ini, namun akan mendapatkan rasio kompresi yang lebih tinggi jika dibandingkan dengan metode

lossless (Sayood, 2006).

Metode lossy adalah suatu metode untuk mengkompresi data dan men-dekompresinya, dimana data yang diperoleh mungkin berbeda dari yang aslinya tetapi cukup dekat perbedaaanya. Lossy kompresi ini paling sering digunakan untuk mengkompresi data multimedia (audio ataupun gambar). Format kompresi lossy mengalami generation loss yaitu jika melakukan berulang kali kompresi dan dekompresi file akan menyebabkan kehilangan kualitas secara progresif.


(66)

Ada terdapat dua skema dasar dalam kompresi lossy, yaitu : lossy transform codec dan

lossy predictive codec.

1. Lossy transform codec, yaitu kompresi dimana sampel suara atau gambar yang

diambil, di potong kesegmen kecil, diubah menjadi ruang basis yang baru dan hasil nilai kuantisasinya menjadi entropy coded.

2. Lossy predictive codec, yaitu kompresi dimana sebelum atau sesudahnya data yang didecode digunakan untuk memprediksi sampel suara dan frame picture saat ini. Kesalahan antara data prediksi dan data yang nyata, bersamaan dengan informasi lain digunakan untuk mereproduksi prediksi, dan kemudian dikuantisasi. Dalam beberapa system, kedua teknik digabungkan, dengan mengubah codec yang digunakan untuk mengkompresi kesalahan sinyal yang dihasilkan dari tahapan prediksi (Nelson, 1996).

Dengan kompresi data lossless, ketika pengguna yang menerima file terkompresi secara lossy (misalnya untuk mengurangi waktu download) file yang diambil akan sedikit berbeda dari yang aslinya dalam levelbit nya, dimana tidak dapat dibedakan oleh mata dan juga telinga manusia secara langsung. Metode ini menghasilkan rasio kompresi yang lebih besar daripada metode lossless. Contoh metode lossy adalah metode CS&Q (coarser sampling and / or quantization), JPEG, dan MPEG.

2.5.3 Ukuran Kinerja Kompresi

Ketika mengukur performa dari suatu algoritma kompresi, biasanya akan fokus pada efisiensi dari ruang penyimpanan dan efisiensi waktu termasuk dalam faktor lainnya. Performa suatu algoritma kompresi juga bergantung pada tipe dan struktur dari sumber masukan, yang mana juga akan tergantung pada apakah termasuk dalam kategori kompresi lossless atau lossy. Untuk menilai dan mengetahui keefektifan suatu algoritma kompresi ataupun untuk mengetahui perbandingan file sebelum dan setlah di kompresi, maka diperlukan beberapa parameter kinerja kompresi yang harus diperhatikan sebagai berikut (Kodituwakku, 2011).

1. Compression Ratio

Compression Ratio merupakan perbandingan antara ukuran file setelah terkompresi dengan file asli, dimana:


(67)

Compression Ratio = �������������

������������ ���

2. Compression Factor

Compression Factor merupakan kebalikan dari Compression Ratio, dimana

perbandingan antara file asli (sebelum terkompresi) dengan file setelah terkompresi, dimana:

Compression Factor = ����������������

������������� 3. Saving Percentage

Saving Percentage menghitung penyusutan setelah file terkompresi dari file

asli sebagai persentase, dimana:

Saving Percentage= ���������� ����������� −��������� ���������� �

���� ������ ����������� x 100 %

4. Compression Time

Waktu yang dibutuhkan untuk kompresi dan dekompresi harus dipertimbangkan secara terpisah. Jika waktu yang dibutuhkan suatu algoritma untuk kompresi dan juga dekompresi kecil atau masih dalam level yang dapat diterima, hal itu menunjukkan bahwa algoritma tersebut dapat diterima untuk masing-masing faktor waktunya. Dengan perkembangan kecanggihan komputer saat ini, maka membuat compression time bernilai sangat kecil dan tergantung pada performa dari komputer yang digunakan.

2.6 Rice Code

Rice Codeadalah salah satu algoritma kompresi yang dapat memperkecil ukuran data

yang lebih kecil dari ukuran sebelumnya. Sebelum adanya Rice Code, terdapat algoritma yang disebut sebagai Golomb Codes yang merupakan familydengan Rice

Code karena memiliki persamaan yang bergantung pada pemilihan parameter m,

dimana m adalah himpunan dari 2 (m = 2k). Rice Codedisebut juga sebagai

Golomb-Rice Code, yang diberi nama sesuai dengan penciptanya yaitu Robert F. Golomb-Rice pada

tahun 1979 (Salomon, 2007).

Rice Code merupakan special case dari Golomb Codes yang mana nilai x

dikodekan k pertama digeser kekanan untuk mendapatkan nilai unary coded. Kemudian urutan terendah dari k nilai asli dari x dilanjutkan sebagai k yang bernilai biner (Moffat & Turpin 2002). Rice Code menunjukkan penggunaan sebuah subset


(1)

2.3.2.2 Algoritma Asimetris ... 14

2.4 Trithemius ... 14

2.5 Kompresi Data ... 18

2.5.1 Metode Lossless ... 18

2.5.2 Metode Lossy ... 19

2.5.3 Ukuran Kinerja Kompresi ... 20

2.6 Rice Code ... 21

BAB 3 ANALISIS DAN PERANCANGAN SISTEM 3.1 Analisis Masalah ... 24

3.2 Analisis Kebutuhan Sistem ... 26

3.2.1 Kebutuhan Fungsional ... 26

3.2.2 Kebutuhan Non Functional ... 27

3.3 Pemodelan Sistem ... 28

3.3.1 Pemodelan Use Case ... 28

3.3.2 Activity Diagram ... 31

3.3.3 Sequence Diagram ... 33

3.4 Perancangan Sistem ... 34

3.4.1 Flowchart ... 35

3.5 Perancangan Interface ... 40

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM 4.1 Implementasi Sistem ... 44

4.1.1 Interface Home ... 44

4.1.2 Form Encryption + Compression ... 45

4.1.3 Form Decompression + Decryption ... 46

4.1.4 Form About ... 47

4.1.5 Form Help ... 47

4.2 Pengujian Sistem ... 48

4.2.1 Pengujian Enkripsi dan Kompresi ... 48

4.2.2 Pengujian Dekompresi dan Dekripsi ... 51

4.2.3 Pengujian dengan semua nilai k ... 53


(2)

BAB 5 KESIMPULAN DAN SARAN

5.1 Kesimpulan ... 57 5.2 Saran ... 58

DAFTAR PUSTAKA


(3)

DAFTAR TABEL

Halaman

Tabel 2.1 Trithemius ... 15

Tabel 2.2 Tabel Trithemius dalam bentuk array ... 17

Tabel 2.3 Modifikasi Tabel Trithemius dalam bentuk array ... 17

Tabel 2.4 Nilai k Rice Code ... 22

Tabel 2.5 Tabel String “RAJA ARIF” ... 23

Tabel 2.6 Tabel String “RAJA ARIF” setelah dikompresi ... 23

Tabel 3.1 Narasi Use Case Enkripsi ... 29

Tabel 3.2 Narasi Use Case Kompresi ... 30

Tabel 3.3 Narasi Use Case Dekompresi ... 30

Tabel 3.4 Narasi Use Case Dekripsi ... 30

Tabel 4.1 Tabel nilai k dengan parameter kompresi ... 54

Tabel 4.2 Hasil Pengujian Waktu Enkripsi dengan Sejumlah Karakter ... 55


(4)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Sistem Kriptografi Klasik ... 9

Gambar 3.1 Analisis masalah dengan diagram Ishikawa ... 26

Gambar 3.2 Use Case Enkrispi-Kompresi dan Dekompresi-Dekripsi ... 29

Gambar 3.3. Activity Diagram Pengamanan File ... 31

Gambar 3.4. Activity Diagram Kompresi File ... 32

Gambar 3.5. Activity Diagram Dekompresi File ... 32

Gambar 3.6. Activity Diagram Dekripsi File ... 33

Gambar 3.7 Sequence Diagram Enkripsi-Kompresi ... 34

Gambar 3.8 Sequence Diagram untuk Dekripsi-Dekompresi ... 34

Gambar 3.9 Flowchart Enkripsi ... 35

Gambar 3.10 Flowchart Dekripsi ... 35

Gambar 3.11 Flowchart Kompresi ... 36

Gambar 3.12 Flowchart Dekompresi ... 36

Gambar 3.13 Flowchart Enkripsi Algoritma Trithemius ... 37

Gambar 3.14 Flowchart Dekripsi Algoritma Trithemius ... 38

Gambar 3.15 FlowchartAlgoritma Rice ... 39

Gambar 3.16Rancangan tampilan awal aplikasi ... 40

Gambar 3.17Rancangan menu About... 41

Gambar 3.18 Rancangan tampilan menu Help ... 41

Gambar 3.19 Rancangan menu enkripsi-kompresi ... 42

Gambar 3.20 Rancangan menu dekompresi-dekripsi ... 43

Gambar 4.1 Interface Halaman Utama ... 44

Gambar 4.2 Sub Menu pada Action ... 45

Gambar 4.3 Form Encryption + Compression ... 46

Gambar 4.4 Form Decompression + Decryption ... 46

Gambar 4.6 Form Help ... 47

Gambar 4.5 Form About ... 47


(5)

Gambar 4.7 Memilih file .docx ... 48

Gambar 4.8 File yang dipilih salah ... 48

Gambar 4.9 Memasukkan kunci Trithemius ... 49

Gambar 4.10 Hasil enkripsi ... 49

Gambar 4.11 Memasukkan nilai k ... 50

Gambar 4.12 Hasil Kompresi ... 51

Gambar 4.13. Insert file hasil kompresi ... 51

Gambar 4.14 Hasil dekompresi ... 52

Gambar 4.15 Hasil dekripsi ... 52

Gambar 4.16 Pengujian nilai k 1 – 6 ... 53

Gambar 4.17 Pengujian nilai k 7 – 8 ... 54


(6)

DAFTAR LAMPIRAN

Halaman A Listing Program ... A - 1 B Daftar Riwayat Hidup ... B - 2