Analisis dan Implementasi Algoritma Kriptografi Playfair Cipher dan Algoritma Kompresi Run Length Encoding Dalam Pengamanan dan Kompresi Data Teks
LISTING PROGRAM
1. Form Home.vb
Public Class Form1
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub AlgoritmaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
AlgoritmaToolStripMenuItem.Click Form2.Show()
End Sub
Private Sub MenuToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuToolStripMenuItem.Click End Sub
Private Sub EnkripsiKompresiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
EnkripsiKompresiToolStripMenuItem.Click Form3.Show()
End Sub
Private Sub DekripsiDekompresiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
DekripsiDekompresiToolStripMenuItem.Click Form4.Show()
End Sub
Private Sub TentangToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
TentangToolStripMenuItem.Click Form5.Show()
End Sub
Private Sub BerandaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub KompresiEnkripsiToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
KompresiEnkripsiToolStripMenuItem.Click Form6.Show()
(2)
Private Sub DekripsiDekompresiToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
DekripsiDekompresiToolStripMenuItem1.Click Form7.Show()
End Sub End Class
2. Form Enkripsi-Kompresi .vb
Imports System.IO
Imports Microsoft.Office.Interop.Word Public Class Form3
Dim strFileName As String Dim cipher As String = ""
Dim alpabet As Char() = New Char(94) {} Dim ab As Integer = 0
Dim plain As String = ""
Dim waktu_proses As New Stopwatch Public Const EOF As Char = ChrW(127) Public Const ESCAPE As Char = ChrW(165) '
Private Function cekKunci(ByVal huruf As Char) As Boolean For i As Integer = 0 To ab - 1
If alpabet(i) = huruf Then Return False
End If Next
alpabet(ab) = huruf ab += 1
Return True End Function
Private Sub putarKunci1(ByVal matrix As Char(,), ByVal huruf As Char) Dim limit As Boolean = False
Dim temp As Char = " "c For i As Integer = 0 To 18 For j As Integer = 0 To 4
If matrix(i, j) = huruf Then If j = 4 AndAlso i = 18 Then temp = matrix(i, j)
matrix(i, j) = matrix(0, j) matrix(0, j) = matrix(0, 0) matrix(0, 0) = matrix(i, 0) matrix(i, 0) = temp
limit = True Exit For ElseIf i = 18 Then temp = matrix(i, j)
(3)
matrix(i, j) = matrix(0, j) matrix(0, j) = matrix(0, j + 1) matrix(0, j + 1) = matrix(i, j + 1) matrix(i, j + 1) = temp
limit = True Exit For ElseIf j = 4 Then temp = matrix(i, j)
matrix(i, j) = matrix(i + 1, j) matrix(i + 1, j) = matrix(i + 1, 0) matrix(i + 1, 0) = matrix(i, 0) matrix(i, 0) = temp
limit = True Exit For Else
temp = matrix(i, j)
matrix(i, j) = matrix(i + 1, j)
matrix(i + 1, j) = matrix(i + 1, j + 1) matrix(i + 1, j + 1) = matrix(i, j + 1) matrix(i, j + 1) = temp
limit = True Exit For End If End If Next
If limit Then Exit For End If Next End Sub
Private Sub putarKunci2(ByVal matrix As Char(,), ByVal huruf As Char) Dim limit As Boolean = False
Dim temp As Char = " "c For i As Integer = 0 To 18 For j As Integer = 0 To 4
If matrix(i, j) = huruf Then If i = 18 AndAlso j = 4 Then temp = matrix(i, j) matrix(i, j) = matrix(i, 0)
matrix(i, 0) = matrix(0, 0) matrix(0, 0) = matrix(0, j) matrix(0, j) = temp
limit = True Exit For ElseIf i = 18 Then temp = matrix(i, j)
matrix(i, j) = matrix(i, j + 1) matrix(i, j + 1) = matrix(0, j + 1) matrix(0, j + 1) = matrix(0, j) matrix(0, j) = temp
limit = True Exit For
(4)
(5)
ElseIf j = 4 Then temp = matrix(i, j)
matrix(i, j) = matrix(i, 0) matrix(i, 0) = matrix(i + 1, 0) matrix(i + 1, 0) = matrix(i + 1, j) matrix(i + 1, j) = temp
limit = True Exit For Else
temp = matrix(i, j)
matrix(i, j) = matrix(i, j + 1)
matrix(i, j + 1) = matrix(i + 1, j + 1) matrix(i + 1, j + 1) = matrix(i + 1, j) matrix(i + 1, j) = temp
limit = True Exit For End If End If Next
If limit Then Exit For End If Next End Sub
Private Sub enkripsi(ByVal bigram As String, ByVal Matrik As Char(,)) Dim limit As Boolean = False
Dim bigramx As Integer() = New Integer(1) {} Dim bigramy As Integer() = New Integer(1) {} For x As Integer = 0 To 1
For i As Integer = 0 To 18 For j As Integer = 0 To 4
If bigram(x) = Matrik(i, j) Then bigramx(x) = i
bigramy(x) = j limit = True
If limit = True AndAlso x = 2 Then Exit For
End If End If Next
If limit = True AndAlso x = 2 Then Exit For
End If Next Next
If bigramx(0) = bigramx(1) Then If bigramy(0) = 4 Then
cipher += Matrik(bigramx(0), 0).ToString() + Matrik(bigramx(1), bigramy(1) + 1).ToString()
(6)
(7)
cipher += Matrik(bigramx(0), bigramy(0) + 1).ToString() + Matrik(bigramx(1), 0).ToString()
Else
cipher += Matrik(bigramx(0), bigramy(0) + 1).ToString() + Matrik(bigramx(1), bigramy(1) + 1).ToString()
End If
ElseIf bigramy(0) = bigramy(1) Then If bigramx(0) = 18 Then
cipher += Matrik(0, bigramy(0)).ToString() + Matrik(bigramx(1) + 1, bigramy(1)).ToString()
ElseIf bigramx(1) = 18 Then
cipher += Matrik(bigramx(0) + 1, bigramy(0)).ToString() + Matrik(0, bigramy(1)).ToString()
Else
cipher += Matrik(bigramx(0) + 1, bigramy(0)).ToString() + Matrik(bigramx(1) + 1, bigramy(1)).ToString()
End If Else
cipher += Matrik(bigramx(0), bigramy(1)).ToString() + Matrik(bigramx(1), bigramy(0)).ToString()
End If
TextBox3.Text = cipher End Sub
Private Sub cari_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cari.Click
Dim AmbilFile As New OpenFileDialog
Dim objFSO As New Scripting.FileSystemObject Dim objFile As Scripting.File
objFSO = New Scripting.FileSystemObject AmbilFile.CheckFileExists = True
AmbilFile.CheckPathExists = True AmbilFile.DefaultExt = "txt" AmbilFile.Filter =
"Documen(*.doc)|*.doc|document(*.docx)|*.docx|TXT File (*.txt)|*.txt|All Files (*.*)|*.*"
AmbilFile.Multiselect = False AmbilFile.ShowDialog()
strFileName = AmbilFile.FileName Textcari.Text = strFileName
Dim app As Application = New Application
Dim doc As Document = app.Documents.Add(strFileName) ' Dim co As Integer = doc.Characters.Count
For i As Integer = 1 To co - 1
Dim tex As String = doc.Characters(i).Text TextBox1.Text += tex
Next
TextBox9.Text = TextBox1.TextLength objFile = objFSO.GetFile(strFileName) TextBox7.Text = objFile.Size & "bytes" End Sub
(8)
(9)
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim kunci As String = TextBox2.Text Dim PKunci As Integer = kunci.Length Dim a As Integer = 0, asci As Integer = 32 Dim Matrik As Char(,) = New Char(18, 4) {} waktu_proses.Start()
For i As Integer = 0 To 18 For j As Integer = 0 To 4 If a < PKunci Then
If cekKunci(kunci(a)) = True Then Matrik(i, j) = kunci(a) Else
j -= 1 End If a += 1 Else
If cekKunci(ChrW(asci)) = True Then Matrik(i, j) = ChrW(asci) Else
j -= 1 End If asci += 1 End If
Next Next
Dim plain As String = TextBox1.Text Dim bigram As String = ""
If plain.Length Mod 2 <> 0 Then plain += "x"
End If
Dim x As Integer = 0
bigram = plain.Substring(x, 2) x += 2
enkripsi(bigram, Matrik)
For i As Integer = 0 To plain.Length - 3 If i Mod 2 = 0 Then
putarKunci1(Matrik, plain(i)) Else
putarKunci2(Matrik, plain(i)) bigram = plain.Substring(x, 2) x += 2
enkripsi(bigram, Matrik) End If
Next
waktu_proses.Stop()
TextBox6.Text = waktu_proses.Elapsed.TotalSeconds.ToString() waktu_proses.Reset()
End Sub
Private Sub hapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hapus.Click
(10)
(11)
Textcari.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = ""
MsgBox("Data telah dihapus", MsgBoxStyle.Exclamation, "Perhatian")
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim i As Integer = FreeFile()
FileOpen(i, "D:\KULIAH\hasil.txt", OpenMode.Output) PrintLine(i, TextBox3.Text)
FileClose(i)
MsgBox("Data telah disimpan", MsgBoxStyle.Information, "Perhatian")
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim i As Integer = FreeFile()
FileOpen(i, "D:\KULIAH\finish.txt", OpenMode.Output) PrintLine(i, TextBox4.Text)
FileClose(i)
MsgBox("Data telah disimpan", MsgBoxStyle.Information, "Perhatian")
End Sub
Public Shared Function RunLengthEncode(ByVal s As String) As String Dim srle As String = String.Empty
Dim ccnt As Integer = 1 'char counter
For i As Integer = 0 To s.Length - 2
If s(i) <> s(i + 1) OrElse i = s.Length - 2 Then
'..a break in character repetition or the end of the string
If s(i) = s(i + 1) AndAlso i = s.Length - 2 Then 'end of string condition
ccnt += 1 End If
If ccnt = 1 Then
srle += (If("1234567890".Contains(s(i).ToString()), "" + ESCAPE, "")) + s(i)
Else
'escape digits
srle += ccnt.ToString() +
(If("1234567890".Contains(s(i).ToString()), "" + ESCAPE, "")) + s(i) End If
'escape digits
If s(i) <> s(i + 1) AndAlso i = s.Length - 2 Then 'end of string condition
srle += (If("1234567890".Contains(s(i + 1).ToString()), "1" + ESCAPE, "")) + s(i + 1)
(12)
(13)
End If
'reset char repetition counter ccnt = 1
Else
ccnt += 1 End If
Next
Return srle End Function
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
waktu_proses.Start()
TextBox4.Text = RunLengthEncode(TextBox3.Text) TextBox10.Text = TextBox4.Text.Count()
waktu_proses.Stop()
TextBox5.Text = waktu_proses.Elapsed.TotalSeconds.ToString() waktu_proses.Reset()
End Sub End Class
3. Form Dekompresi-Dekripsi .vb
Imports System.IO
Imports Microsoft.Office.Interop.Word Public Class Form4
Dim strFileName As String Dim plain As String = ""
Dim alpabet As Char() = New Char(94) {} Dim ab As Integer = 0
Dim waktu_proses As New Stopwatch Public Const EOF As Char = ChrW(127) Public Const ESCAPE As Char = ChrW(165)
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim AmbilFile As New OpenFileDialog Dim strFileName As String
Dim objFSO As New Scripting.FileSystemObject Dim objFile As Scripting.File
objFSO = New Scripting.FileSystemObject AmbilFile.CheckFileExists = True
AmbilFile.CheckPathExists = True AmbilFile.DefaultExt = "txt" AmbilFile.Filter =
"Documen(*.doc)|*.doc|document(*.docx)|*.docx|TXT File (*.txt)|*.txt|All Files (*.*)|*.*"
(14)
(15)
AmbilFile.Title = "Pilih TXT, doc File aja, jangan yg lain" AmbilFile.Multiselect = False
AmbilFile.ShowDialog()
strFileName = AmbilFile.FileName Textcari.Text = strFileName
Dim app As Application = New Application
Dim doc As Document = app.Documents.Add(strFileName) Dim co As Integer = doc.Characters.Count
For i As Integer = 1 To co - 1
Dim tex As String = doc.Characters(i).Text TextBox1.Text += tex
Next
TextBox6.Text = TextBox1.TextLength objFile = objFSO.GetFile(strFileName) TextBox7.Text = objFile.Size & "bytes" End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim i As Integer = FreeFile()
FileOpen(i, "D:\KULIAH\hasil.txt", OpenMode.Output) PrintLine(i, TextBox4.Text)
FileClose(i)
MsgBox("Data telah disimpan", MsgBoxStyle.Information, "Perhatian")
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim i As Integer = FreeFile()
FileOpen(i, "D:\KULIAH\hasil.txt", OpenMode.Output) PrintLine(i, TextBox3.Text)
FileClose(i)
MsgBox("Data telah disimpan", MsgBoxStyle.Information, "Perhatian")
End Sub
Public Shared Function RunLengthDecode(ByVal s As String) As String Dim dsrle As String = String.Empty, ccnt As String =
String.Empty
'char counter
For i As Integer = 0 To s.Length - 1
If "1234567890".Contains(s(i).ToString()) Then 'extract repetition counter
ccnt += s(i) Else
If s(i) = ESCAPE Then i += 1
End If
If ccnt = "" Then
dsrle += s(i).ToString() ccnt = ""
Else
dsrle += New [String](s(i), Integer.Parse(ccnt)) ccnt = ""
End If End If Next
Return dsrle End Function
(16)
(17)
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
waktu_proses.Start()
TextBox4.Text = RunLengthDecode(TextBox1.Text) waktu_proses.Stop()
TextBox5.Text = waktu_proses.Elapsed.TotalSeconds.ToString() waktu_proses.Reset()
End Sub
Private Function cekKunci(ByVal huruf As Char) As Boolean For i As Integer = 0 To ab - 1
If alpabet(i) = huruf Then Return False
End If Next
alpabet(ab) = huruf ab += 1
Return True End Function
Private Sub putarKunci1(ByVal matrix As Char(,), ByVal huruf As Char) Dim limit As Boolean = False
Dim temp As Char = " "c For i As Integer = 0 To 18 For j As Integer = 0 To 4
If matrix(i, j) = huruf Then If j = 4 AndAlso i = 18 Then temp = matrix(i, j)
matrix(i, j) = matrix(0, j) matrix(0, j) = matrix(0, 0) matrix(0, 0) = matrix(i, 0) matrix(i, 0) = temp
limit = True Exit For ElseIf i = 18 Then temp = matrix(i, j)
matrix(i, j) = matrix(0, j) matrix(0, j) = matrix(0, j + 1) matrix(0, j + 1) = matrix(i, j + 1) matrix(i, j + 1) = temp
limit = True Exit For ElseIf j = 4 Then temp = matrix(i, j)
matrix(i, j) = matrix(i + 1, j) matrix(i + 1, j) = matrix(i + 1, 0) matrix(i + 1, 0) = matrix(i, 0) matrix(i, 0) = temp
limit = True Exit For Else
temp = matrix(i, j)
matrix(i, j) = matrix(i + 1, j)
matrix(i + 1, j) = matrix(i + 1, j + 1) matrix(i + 1, j + 1) = matrix(i, j + 1) matrix(i, j + 1) = temp
limit = True Exit For End If End If
(18)
(19)
Next
If limit Then Exit For End If Next End Sub
Private Sub putarKunci2(ByVal matrix As Char(,), ByVal huruf As Char) Dim limit As Boolean = False
Dim temp As Char = " "c For i As Integer = 0 To 18 For j As Integer = 0 To 4
If matrix(i, j) = huruf Then If i = 18 AndAlso j = 4 Then temp = matrix(i, j)
matrix(i, j) = matrix(i, 0) matrix(i, 0) = matrix(0, 0) matrix(0, 0) = matrix(0, j) matrix(0, j) = temp
limit = True Exit For ElseIf i = 18 Then temp = matrix(i, j)
matrix(i, j) = matrix(i, j + 1) matrix(i, j + 1) = matrix(0, j + 1) matrix(0, j + 1) = matrix(0, j) matrix(0, j) = temp
limit = True Exit For ElseIf j = 4 Then temp = matrix(i, j)
matrix(i, j) = matrix(i, 0) matrix(i, 0) = matrix(i + 1, 0) matrix(i + 1, 0) = matrix(i + 1, j) matrix(i + 1, j) = temp
limit = True Exit For Else
temp = matrix(i, j)
matrix(i, j) = matrix(i, j + 1)
matrix(i, j + 1) = matrix(i + 1, j + 1) matrix(i + 1, j + 1) = matrix(i + 1, j) matrix(i + 1, j) = temp
limit = True Exit For End If End If Next
If limit Then Exit For End If Next End Sub
Private Sub dekripsi(ByVal bigram As String, ByVal Matrik As Char(,)) Dim limit As Boolean = False
Dim bigramx As Integer() = New Integer(1) {} Dim bigramy As Integer() = New Integer(1) {} For x As Integer = 0 To 1
For i As Integer = 0 To 18 For j As Integer = 0 To 4
(20)
(21)
If bigram(x) = Matrik(i, j) Then bigramx(x) = i
bigramy(x) = j limit = True
If limit = True AndAlso x = 2 Then Exit For
End If End If Next
If limit = True AndAlso x = 2 Then Exit For
End If Next Next
If bigramx(0) = bigramx(1) Then If bigramy(0) = 0 Then
plain += Matrik(bigramx(0), 4).ToString() + Matrik(bigramx(1), bigramy(1) - 1).ToString()
ElseIf bigramy(1) = 0 Then
plain += Matrik(bigramx(0), bigramy(0) - 1).ToString() + Matrik(bigramx(1), 4).ToString()
Else
plain += Matrik(bigramx(0), bigramy(0) - 1).ToString() + Matrik(bigramx(1), bigramy(1) - 1).ToString()
End If
ElseIf bigramy(0) = bigramy(1) Then If bigramx(0) = 0 Then
plain += Matrik(18, bigramy(0)).ToString() + Matrik(bigramx(1) - 1, bigramy(1)).ToString()
ElseIf bigramx(1) = 0 Then
plain += Matrik(bigramx(0) - 1, bigramy(0)).ToString() + Matrik(18, bigramy(1)).ToString()
Else
plain += Matrik(bigramx(0) - 1, bigramy(0)).ToString() + Matrik(bigramx(1) - 1, bigramy(1)).ToString()
End If Else
plain += Matrik(bigramx(0), bigramy(1)).ToString() + Matrik(bigramx(1), bigramy(0)).ToString()
End If
TextBox3.Text = plain End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim kunci As String = TextBox2.Text Dim PKunci As Integer = kunci.Length Dim a As Integer = 0, asci As Integer = 32 Dim Matrik As Char(,) = New Char(18, 4) {} waktu_proses.Start()
For i As Integer = 0 To 18 For j As Integer = 0 To 4 If a < PKunci Then
If cekKunci(kunci(a)) = True Then Matrik(i, j) = kunci(a) Else
j -= 1 End If a += 1 Else
(22)
(23)
Matrik(i, j) = ChrW(asci) Else
j -= 1 End If asci += 1 End If
Next Next
Dim cipher As String = TextBox4.Text Dim bigram As String = ""
Dim x As Integer = 0
bigram = cipher.Substring(x, 2) x += 2
dekripsi(bigram, Matrik)
For i As Integer = 0 To cipher.Length - 3 If i Mod 2 = 0 Then
putarKunci1(Matrik, plain(i)) Else
putarKunci2(Matrik, plain(i)) bigram = cipher.Substring(x, 2) x += 2
dekripsi(bigram, Matrik) End If
Next
TextBox9.Text = TextBox3.Text.Count waktu_proses.Stop()
TextBox8.Text = waktu_proses.Elapsed.TotalSeconds.ToString() waktu_proses.Reset()
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" Textcari.Text = ""
MsgBox("Data telah dihapus", MsgBoxStyle.Exclamation, "Perhatian")
TextBox1.Focus() End Sub
(24)
DAFTAR PUSTAKA
Azhari, Pocut Rizky. 2014. Implementasi kombinasi algoritma kriptografi modifikasi playfair cipher dan teknik steganografi begin of file pada pengamanan tesan Teks. Skripsi. Universitas Sumatera Utara.
Cormen, Thomas H. 2001. Introduction to Algorithms. Second Edition. USA: MIT Press.
Herry dan Yessi. 2000. Algoritma Run-Length Half Byte dan Huffman untuk Pemampatan File. Bandung: Institut Teknologi Bndung.
Kurniawan, Yusuf. 2004. Kriptografi keamanan Internet dan Jaringan Komunikasi. Bandung : Informatika Bandung.
Munir, Rinaldi. 2005. Matematika Diskrit. Edisi ketiga. Informatika: Bandung. Munir, Rinaldi. 2006. Kriptografi. Informatika: Bandung.
Mollin, R.A. 2007. An Introduction to Cryptography. 2nd Edition. Taylor &Francis Group: LLC. United State of America.
Sadikin, R. 2012. Kriptografi untuk Keamanan Jaringan dan Implementasinya dalam Bahasa Java. Andi Offset: Yogyakarta.
Schneier, Bruce. 1996. Applied Cryptography: Protocols, Algorithms, and Source Code in C. Edisi ke-2. New Jersey: John Wiley & Sons, Inc.
Setyaningsih, Emy. 2009. Penyandian citra menggunakan metode Playfair Cipher. Jurnal Teknologi: 213-217.
Tanjung, Namira Listya Utami. 2014. Analisis kombinasi algoritma Knapsack dan RLE pada file teks. Skripsi. Universitas Sumatera Utara.
Yonathan, F. 2011. Modifikasi Playfair Cipher dengan teknik pemutaran kunci dua arah. Makalah. Institut Teknologi Bandung.
Whitten, J.L., Bentley, L.D. & Dittman, K.C. 2004. Metode Desain & Analisis Sistem. Edisi 6. ANDI: Yogyakarta.
(25)
BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Sebelum dilakukan tahap perancangan sitem kita perlu melakukan analisis terhadap sistem yang hendak di bangun. Analisis sistem diperlukan agar sistem yang dirancang sesuai dengan tujuan awal pembuatan sistem, pada tahap ini akan diperoleh gambaran kebutuhan, cara kerja sistem, dan alur data yang akan dikerjakan oleh sistem. Hal ini akan sangat membantu dalam proses implementasi sistem.
3.1.1 Analisis Masalah
Untuk dapat menghindari ancaman dalam proses pengiriman dan penerimaan data rahasia, diperlukan sebuah algoritma enkripsi untuk penyandian data agar data menjadi sulit dimengerti. Namun, agar penerima yang dituju dapat membaca data yang dikirim, diperlukan algoritma dekripsi untuk mengembalikan data asli seperti sebelum penyandian. Selanjutnya untuk menghindari lamanya waktu pengiriman data dalam ukuran yang besar dibutuhkan algoritma kompresi dan dekompresi data. Pada penelitian ini akan di analisis dan diimplementasikan algoritma kriptografi Playfair Cipher dan algoritma kompresi RLE.
Pada kriptografi terdapat enam hal pokok layanan yang harus terpenuhi yaitu : otentikasi, kendali akses, kerahasiaan data, keutuhan data, nonrepudiation, ketersediaan. Mengirim dan menerima pesan rahasia membutuhkan elemen – elemen berikut ini (Sadikin,2012).
(26)
1. Plaintext
Pesan atau data dalam bentuk aslinya yang dapat dibaca dan masukan bagi algoritma enkripsi.
2. Secret Key
Masukan bagi algoritma enkripsi merupakan nilai yang bebas terhadap teks asli dan menentukan hasil keluaran algoritma enkripsi.
3. Ciphertext
Hasil dari proses algoritma enkripsi dan teks asli dianggap telah tersembunyi. 4. Algoritma Enkripsi
Algoritma enkripsi memiliki 2 masukan yaitu teks asli dan kunci rahasia, kedua masukan tersebut akan diproses sehingga menghasilkan teks sandi.
5. Algoritma Dekripsi
Algoritma dekripsi memiliki 2 masukan yaitu teks sandi dan kunci rahasia, keduanya
akan diproses sehingga menghasilkan teks asli.
Diagram Ishikawa merupakan suatu alat visual untuk mengidentifikasi, mengeksplorasi, dan secara diagram menggambarkan semua penyebab yang berhubungan dengan suatu permasalahan. Diagram ini berbentuk tulang ikan yang kepalanya menghadap ke kanan. Diagram ini menunjukkan sebuah dampak atau akibat dari permasalahan dengan berbagai penyebabnya (Whitten, 2004). Masalah penelitian ini dapat dilihat pada Gambar 3.1 yang dirancang dalam bentuk diagram Ishikawa (fishbone/cause and effect diagram).
Aplikasi kriptografi masih tergolong tidak sederhana
Sistem Algoritma
kriptografi klasik tidak terlalu aman
Metode Sulit menemukan metode yang tepat untuk mengamankan dan kompresi file teks
Ukuran file besar Data tidak aman Data
Pemalsuan pesan User
Kebutuhan user untuk mengirim data dengan aman dan cepat
Keamanan pesan dan pemampatan data dengan Playfair Cipher dan RLE
(27)
Gambar 3.1 Diagram Ishikawa Masalah Penelitian
3.1.2 Analisis Kebutuhan
Analisis kebutuhan merupakan analisis untuk menentukan kebutuhan apa saja yang diperlukan untuk membangun sistem sesuai dengan yang diharapkan. Analisis kebutuhan dibagi menjadi dua bagian, yaitu kebutuhan fungsional dan kebutuhan non fungsional.
3.1.2.1 Kebutuhan fungsional
Kebutuhan fungsional adalah fungsi-fungsi yang harus dipenuhi oleh sistem. Untuk mengimplementasi algoritma kriptografi Playfair Cipher dan algoritma kompresi RLE, kebutuhan fungsional yang harus dipenuhi adalah sebagai berikut :
1. Sistem mampu membaca String dalam file teks yang diinputkan oleh user maupun file yang telah ada dalam format *.txt, *.doc/docx.
2. Sistem mampu melakukan enkripsi pesan dengan algoritma Playfair Cipher dengan kunci yang diinputkan dan telah disepakati oleh user pengirim dan user penerima pesan, sehingga didapat hasil berupa cipherteks. Sistem juga mampu melakukan dekripsi pesan menjadi String yang sesuai dengan pesan asli atau plainteks.
3. Sistem mampu melakukan kompresi pesan tersandi (Cipherteks) dengan menggunakan algoritma RLE, sehingga menghasilkan pesan yang telah dikompresi. Selanjutnya sistem juga mampu melakukan dekompresi sehingga didapatkan pesan yang sama seperti sebelum dikompresi.
3.1.2.2Kebutuhan Nonfungsional
Kebutuhan nonfungsional sistem ini mencakup karakteristik berikut: 1. Performa
Perangkat lunak yang akan dibangun harus dapat menunjukkan hasil dari fungsi kriptografi dan kompresi yang dilakukan oleh sistem.
(28)
2. Efisiensi
Sistem atau perangkat lunak yang akan dibangun harus sesederhana mungkin dan memiliki tampilan yang user friendly agar mudah digunakan oleh pengguna, serta memiliki halaman petunjuk.
3. Ekonomi
Sistem atau perangkat lunak yang akan dibangun harus dapat bekerja dengan baik tanpa perlu mengeluarkan biaya yang tinggi.
4. Dokumentasi
Sistem atau perangkat lunak yang akan dibangun dapat menyimpan data hasil enkripsi, kompresi pesan serta hasil dekompresi dan dekripsi pesan, dan juga tata cara penggunaan sistem.
5. Manajemen kualitas
System atau perangkat lunak yang dibangun harus memiliki kualitas yang baik yaitu proses enkripsi dan dekripsi yang akurat serta proses kompresi dan dekripsi yang cepat.
6. Kontrol
Perangkat lunak yang dibangun akan menampilkan pesan error untuk setiap input yang tidak sesuai.
3.2 Perancangan Sistem
Sistem ini dirancang dengan membuat flowchart, use case, activity diagram, dan sequence diagram.
3.2.1 Flowchart
Pada tahap ini, akan dibuat lima buah flowchart untuk masing-masing algoritma yang digunakan pada sistem ini, yaitu: flowchart enkripsi Playfair Cipher, flowchart kompresi RLE, flowchart dekripsi Playfair Cipher, flowchart dekompresi RLE dan flowchart sistem.
(29)
3.2.1.1 Flowchart Proses Enkripsi
Proses enkripsi pesan ini menggunakan algoritma klasik Playfair Cipher yang dimodifikasi dengan teknik pemutaran kunci dua arah. Proses enkripsi dapat dilihat pada flowchart Gambar 3.2 berikut ini:
(30)
3.2.1.2 Flowchart Proses Kompresi
Setelah proses enkripsi menghasilkan cipherteks, selanjutnya dilakukan proses kompresi untuk memampatkan pesan menjadi ukuran yang lebih kecil dengan menggunakan algoritma RLE. Proses kompresi pesan dapat dilihat pada flowchart Gambar 3.3 berikut ini :
(31)
3.2.1.3 Flowchart Proses Dekripsi
Proses dekripsi dilakukan setelah pesan di dekompresikan dengan RLE, sehingga menghasilkan cipherteks yang sama dengan pesan sebelum proses kompresi dilakukan. Proses dekripsi pesan dapat dilihat pada flowchart Gambar 3.4 berikut ini:
(32)
(33)
3.2.1.4 Flowchart Proses Dekompresi
Proses dekompresi dilakukan untuk mengembalikan pesan ke ukuran semula yaitu cipherteks sebelum dilakukan kompresi. Langkah dekompresi dapat dilihat pada flowchart Gambar 3.5 berikut ini :
Gambar 3.5 Flowchart dekompresi RLE
3.2.1.5 Flowchart Sistem
Flowchart sistem secara umum digambarkan pada Gambar 3.6. Pada Flowchart ini digambarkan sistem yang akan dibangun memiliki tiga parameter halaman yang dapat dipilih oleh user, yaitu halaman petunjuk penggunaan, halaman profil, dan halaman utama sistem yaitu pengamanan dan kompresi data.
(34)
Gambar 3.6 Flowchart Sistem
3.2.2.Use Case Diagram
Use case adalah rangkaian uraian sekelompok yang saling terkait dan membentuk sebuah sistem secara teratur yang dilakukan oleh actor. Use case digunakan untuk membentuk tingkah laku benda dalam sebuah model serta direalisasikan dengan kolaborasi (Whitten, 2004).
Berikut ini adalah use case diagram yang dirancang untuk menganalisa komponen-komponen apa saja yang berperan dalam sistem. Use case diagram sistem pada aplikasi dapat dilihat pada Gambar 3.7 berikut ini :
(35)
Gambar 3.7 Use case diagram
Berikut ini merupakan tabel spesifikasi use case untuk enkripsi pesan dapat dilihat pada Tabel 3.1.
Tabel 3.1 Spesifikasi Use Case enkripsi pesan
Name Enkripsi pesan
Actors User
Trigger User menginputkan plaintext yang akan di enkripsi dan menginputkan kunci
Preconditions User telah menyiapkan plaintext yang disimpan dalam bentuk *.txt atau *.doc dan user juga dapat menginputkan langsung plaintext kedalam system
Post Conditions User dapat melihat hasil enkripsi pesan / Ciphertext Success Scenario 1. User telah menginputkan plaintext yang akan
dienkripsi dan kuncinya.
(36)
3. Sistem melakukan proses enkripsi plaintext yang telah diinputkan.
4. User dapat melihat hasil enkripsi plaintext yaitu Ciphertext..
Alternative Flows -
Berikut ini merupakan tabel spesifikasi use case untuk kompresi pesan dapat dilihat pada Tabel 3.2.
Tabel 3.2 spesifikasi Use Case kompresi pesan
Name Kompresi pesan
Actors User
Trigger User menginputkan pesan yang akan di kompresi
Preconditions User mengakses tombol kompresi Post Conditions User dapat melihat hasil kompresi pesan
Success Scenario 1. User telah menginputkan pesan yang akan dikompresi
2. User mengakses tombol kompresi
3. Sistem melakukan proses kompresi pesan yang telah diinputkan.
4. User dapat melihat hasil kompresi pesan Alternative Flows -
Berikut ini merupakan tabel spesifikasi use case untuk dekompresi pesan dapat dilihat pada Tabel 3.3.
Tabel 3.3 spesifikasi Use Case dekompresi pesan
Name Dekompresi pesan
Actors User
(37)
Preconditions User mengakses tombol dekompresi
Post Conditions User dapat melihat hasil dekompresi pesan. Success Scenario 1. User telah menginputkan pesan yang akan
didekompresi.
2. User mengakses tombol dekompresi
3. Sistem melakukan proses dekompresi pesan yang telah diinputkan.
4. User dapat melihat hasil dekompresi pesan/plaintext Alternative Flows -
Berikut ini merupakan tabel spesifikasi use case untuk dekripsi pesan dapat dilihat pada Tabel 3.4
Tabel 3.4 spesifikasi Use Case dekripsi pesan
Name Dekripsi pesan
Actors User
Trigger User menginputkan pesan / ciphertext yang akan di dekripsi Preconditions User mengakses tombol dekripsi
Post Conditions User dapat melihat hasil dekripsi pesan / plaintext Success Scenario 1. User telah menginputkan pesan yang akan
didekripsi.
2. User mengakses tombol dekripsi
3. Sistem melakukan proses dekripsi pesan yang telah diinputkan.
4. User dapat melihat hasil dekripsi pesan/plaintext Alternative Flows -
(38)
3.2.3 Activity Diagram
Activity diagram juga merupakan bagian dari pemodelan sistem, menampilkan gambaran berbagai alur aktivitas dalam sistem yang sedang dirancang. Activity diagram lebih menggambarkan proses – proses dan jalur – jalur aktivitas dari level atas secara umum (Whitten, 2004).
Berikut ini adalah activity diagram untuk proses enkripsi dan kompresi pesan dapat dilihat pada Gambar 3.8 berikut ini :
Gambar 3.8 Activity Diagram Enkripsi dan Kompresi
Berikut ini adalah activity diagram untuk proses dekompresi dan dekripsi pesan dapat dilihat pada Gambar 3.9 berikut ini :
(39)
Gambar 3.9 Activity Diagram Dekompresi dan Dekripsi
3.2.4 Sequence Diagram
Sequence diagram (diagram urutan) adalah suatu diagram yang memperlihatkan interaksi – interaksi antar objek di dalam sistem yang disusun pada sebuah urutan atau rangkaian waktu. Sequence diagram diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan keluaran yang dihasilkan (Whitten, 2004). Sequence diagram pada sistem yang dirancang ditunjukkan pada Gambar 3.10 berikut ini :
(40)
Gambar 3.10 Sequence Diagram Sistem
3.3 Perancangan Antar Muka
Perancangan antar muka merupakan penghubung antara user dengan sistem. Syarat utama pembuatan antar muka adalah berorientasi pada user friendly, hal ini dimaksudkan untuk memudahkan user dalam pengoperasian system.
3.3.1 Halaman Beranda
Pada halaman beranda ini merupakan tampilan awal dari sistem saat dijalankan. Halaman awal ini berisikan judul sistem, nama penulis dan instansi pendidikan penulis. Rancangan halaman awal dapat dilihat pada Gambar 3.11.
(41)
Gambar 3.11 Rancangan Antarmuka Beranda
Keterangan Gambar :
1. Label : Label yang digunakan untuk judul sistem dan nama penulis. 2. Picturebox : Digunakan untuk logo USU.
3. Menustrip menu : Menampilkan dua menu pilihan yaitu enkripsi-kompresi dan dekripsi-dekompresi.
4. Menustrip Tentang : Digunakan untuk menampilkan keterangan penulis. 5. Menustrip bantuan : Digunakan untuk menampilkan petunjuk penggunaan
sistem.
3.3.2 Halaman Enkripsi-Kompresi
Halaman enkripsi-kompresi ini merupakan sub menu dari menustrip menu yang dapat dipilih oleh user. Pada halaman utama sistem ini, terdapat beberapa tombol yang digunakan untuk menjalankan fungsi-fungsi enkripsi Playfair Cipher dan fungsi kompresi dengan RLE. Halaman enkripsi-kompresi ini ditunjukkan pada Gambar 3.12.
Bantuan Tentang
Menu
ANALISIS DAN IMPLEMENTASI ALGORITMA PLAYFAIR CIPHER DAN RUN LENGTH ENCODING DALAM PENGAMANAN DAN KOMPRESI
DATA TEKS
Logo Universitas Sumatera Utara
ANANDA DWI PUTRI 121401050
3 4 5
1
2
(42)
Gambar 3.12 Rancangan Antarmuka Enkripsi-Kompresi
Keterangan Gambar :
1. Label : Label enkripsi pesan. 2. Label : Label kompresi pesan. 3. Label : Label pencarian file. 4. Label : Label ukuran file. 5. Label : Label plainteks.
6. Textbox : Menampilkan nama file yg di cari.
7. Button : Tombol cari, untuk membuka direktori dan mencari file. 8. Textbox : Menampilkan ukuran file.
9. Textbox : Menampilkan isi file/plainteks yang telah dicari sebelumnya. 10.Label : Label kunci.
11.Textbox : Menginput kunci yang diinginkan.
12.Button : Tombol enkripsi, untuk mengenkripsi pesan/plainteks. 13.Label : Label cipherteks.
21
17
Enkripsi dengan Playfair Kompresi dengan RLE
Waktu : Ukuran : dengan Hasil Kompresi Plainteks File :
dengan Ukuran : dengan Plainteks Plainteks Kunci Cipherteks Plainteks
1 2
3
4 6 7
8 5
9
10
11 12
13 14 15 23 19 20 22 18 16 21 17
(43)
14.Textbox : Menampilkan hasil enkripsi/cipherteks. 15.Button : Tombol save, menyimpan file cipherteks. 16.Label : Label hasil kompresi.
17.Textbox : Menampilkan hasil kompresi.
18.Button : Tombol kompresi, untuk kompresi pesan cipherteks. 19.Label : Label waktu kompresi.
20.Textbox : Menampilkan waktu kompresi. 21.Label : Label ukuran file.
22.Textbox : Manampilkan ukuran file setelah dikompresi. 23.Button : Tombol save, menyimpan hasil kompresi.
3.3.3 Halaman Dekripsi-Dekompresi.
Halaman dekripsi-dekompresi ini merupakan sub menu dari menustrip menu yang dapat dipilih oleh user. Pada halaman ini, terdapat beberapa tombol yang digunakan untuk menjalankan fungsi-fungsi dekripsi Playfair Cipher dan fungsi dekompresi dengan RLE. Halaman dekripsi-dekompresi ini ditunjukkan pada Gambar 3.13.
(44)
Gambar 3.13 Rancangan Antarmuka Dekompresi-Dekripsi
Keterangan Gambar :
1. Label : Label dekompresi pesan. 2. Label : Label dekripsi pesan. 3. Label : Label pencarian file. 4. Label : Label ukuran file. 5. Label : Label file ter-kompresi.
6. Textbox : Menampilkan nama file yg di cari.
7. Button cari : Tombol cari, untuk membuka direktori dan mencari file. 8. Textbox : Menampilkan ukuran file.
9. Textbox : Menampilkan isi file ter-kompresi yang telah dicari sebelumnya. 10.Button dekompresi : Untuk dekompresi file.
11.Label : Label cipherteks.
12.Textbox : Menampilkan file yg telah di-dekompresikan/cipherteks.
Dekompresi dengan RLE Dekripsi dengan Playfair
Kunci
Ukuran : dengan Plainteks
Plainteks File :
dengan Ukuran : dengan Hasil Kompresi Plainteks Waktu Cipherteks Plainteks 1 3
4 6 7
8 5 9 12 18 10 13 1 16 15 11 17 14 1 21 1 20 1 22 14 1 19 1 2
(45)
13.Label : Label waktu dekompresi.
14.Textbox : Menampilkan waktu dekompresi file. 15.Label : Label kunci pesan.
16.Textbox : Meng-input kunci pesan.
17.Button Dekripsi : Mengdekripsikan pesan.
18.Textbox : Menampilkan hasil dekripsi pesan/plainteks. 19.Label : Label plainteks.
20.Textbox : Menampilkan ukuran file. 21.Label : Label ukuran file.
22.Button save : Menyimpan file.
3.3.4 Halaman Tentang
Halaman tentang ini merupakan menustrip yang dapat dipilih oleh user. Pada halaman ini, user dapat melihat profil/biodata dari penulis. Halaman tentang ini ditunjukkan pada Gambar 3.14.
Gambar 3.14 Rancangan Antarmuka Tentang
Keterangan Gambar :
1. Label : Label judul skripsi/ aplikasi 2. Picturebox : Menampilkan Foto penulis. 3. Label : Label nama penulis.
1
2
3
4 5
(46)
4. Label : Label nomor induk mahasiswa (NIM) penulis. 5. Label : Label alamat e-mail penulis.
6. Label : Label no HP penulis.
3.3.5 Halaman Bantuan
Halaman bantuan ini merupakan menustrip yang dapat dipilih oleh user. Pada halaman ini, user dapat melihat petunjuk penggunaan aplikasi. Halaman bantuan ini ditunjukkan pada Gambar 3.15.
Gambar 3.15 Rancangan Antarmuka Bantuan
Keterangan Gambar :
1. Label : Label petunjuk penggunaan.
2. Textbox : Menampilkan petunjuk penggunaan aplikasi. Petunjuk Penggunaan
1
(47)
BAB 4
IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi
Setelah selesai tahap analisis dan perancangan sistem, selanjutnya dilakukan tahap implementasi sistem, yaitu mengimplementasikan sistem yang telah dirancang sebelumnya ke dalam bahasa pemrograman. Dalam tugas akhir ini sistem dibangun dengan menggunakan Microsoft Visual Basic 2010. Terdapat 7 halaman utama pada sistem, yaitu : halaman Beranda, halaman Proses yang terdiri dari halaman Enkripsi-Kompresi, Dekompresi-Dekripsi, Kompresi-Enkripsi, dan Dekripsi-Dekompresi, halaman Tentang, dan halaman Bantuan.
4.1.1 Halaman Beranda
Halaman Beranda merupakan halaman yang pertama kali terbuka saat sistem dijalankan. Halaman ini ditunjukan pada Gambar 4.1.
(48)
Pada Gambar 4.1 terdapat 3 menu utama yang dapat memanggil halaman lain, yaitu: menu Proses, menu Tentang, dan menu Bantuan. Pada menu bar Proses terdapat 4 menu lainnya yaitu: Enkripsi-kompresi, dekompresi-dekripsi, kompresi-enkripsi, dan dekripsi-dekompresi. Pada halaman Beranda ini terdapat informasi mengenai judul serta data pembuat sistem.
4.1.2 Halaman Proses
Pada menu proses yang terdapat pada halaman beranda, user dapat memilih proses yang diinginkan sesuai kebutuhan. Halaman proses ini digunakan untuk proses enkripsi dan kompresi pesan serta proses dekripsi dan dekompresi pesan menggunakan algoritma Playfair Cipher dan RLE. Untuk halaman Enkripsi-kompresi dapat dilihat pada Gambar 4.2.
Gambar 4.2 Antarmuka Enkripsi-Kompresi
Pada halaman enkripsi-kompresi, proses dilakukan dengan meng-enkripsi pesan terlebih dahulu selanjutnya dilakukan proses kompresi terhadap ciphertext yang dihasilkan. Untuk halaman dekompresi-dekripsi dapat dilihat pada Gambar 4.3.
(49)
Gambar 4.3 Antarmuka Dekompresi-Dekripsi
Pada halaman dekompresi-dekripsi, proses pengembalian pesan semula dilakukan dengan meng-dekompresi pesan terlebih dahulu selanjutnya dilakukan proses dekripsi terhadap ciphertext dan menghasilkan plaintext sesuai pesan semula. Untuk halaman kompresi-enkripsi dapat dilihat pada Gambar 4.4.
(50)
Gambar 4.4 Antarmuka Kompresi-Enkripsi
Pada halaman kompresi-enkripsi, proses dilakukan dengan mengkompresi pesan terlebih dahulu, selanjutnya dilakukan proses enkripsi pesan. Untuk halaman dekripsi-dekompresi dapat dilihat pada Gambar 4.5
.
(51)
4.1.3 Halaman Tentang
Halaman Tentang dapat ditampilkan bila user memilih menu “Tentang” pada halaman
“Beranda” .Adapun tampilan dari halaman Tentang ini dapat dilihat pada Gambar
4.6.
Gambar 4.6 Antarmuka Tentang
Pada Gambar 4.6 ditampilkan informasi mengenai judul tugas akhir , foto beserta biodata singkat dari penulis / pembuat sistem.
4.1.4 Halaman Bantuan
Halaman Bantuan dapat ditampilkan bila user memilih menu “bantuan” pada halaman “Beranda” .Adapun tampilan dari halaman bantuan ini dapat dilihat pada Gambar 4.7.
(52)
Gambar 4.7 Antarmuka Bantuan
Pada Gambar 4.7 ditampilkan informasi tentang petunjuk penggunaan sistem, hal ini dimaksudkan dapat mempermudah pengguna dalam mengoperasikan sistem.
4.2 Pengujian
Tahap selanjutnya dilakukan pengujian terhadap algoritma yang digunakan dalam sistem, yaitu algoritma kriptografi Playfair Cipher dan algoritma kompresi Run Length Encoding. Pada pengujian tugas akhir ini parameter yang dihitung adalah waktu dari kedua algoritma melakukan proses enkripsi-dekripsi dan kompresi-dekompresi serta ukuran file setelah proses kompresi dan kompresi-dekompresi. Digunakan pula notasi big-O untuk menganalisa kompleksitas algoritma. Terdapat beberapa kriteria dalam pengujian ini, yaitu :
1. Pesan yang digunakan/plaintext terdiri dari karakter ASCII yang bersumber dari file teks (*.txt/*.doc/*.docx) atau dapat langsung diinputkan pada textbox yang tersedia. Karakter ASCII yang digunakan dapat dilihat pada Tabel 4.1.
Tabel 4.1 Karakter ASCII yang digunakan Desimal Karakter Desimal Karakter Desimal Karakter
32 Spasi 64 @ 96 `
33 ! 65 A 97 a
34 " 66 B 98 b
(53)
36 $ 68 D 100 d
37 % 69 E 101 e
38 & 70 F 102 f
39 ' 71 G 103 g
40 ( 72 H 104 h
41 ) 73 I 105 i
42 * 74 J 106 j
43 + 75 K 107 k
44 , 76 L 108 l
45 - 77 M 109 m
46 . 78 N 110 n
47 / 79 O 111 o
48 0 80 P 112 p
49 1 81 Q 113 q
50 2 82 R 114 r
51 3 83 S 115 s
52 4 84 T 116 t
53 5 85 U 117 u
54 6 86 V 118 v
55 7 87 W 119 w
56 8 88 X 120 x
57 9 89 Y 121 y
58 : 90 Z 122 z
59 ; 91 [ 123 {
60 < 92 \ 124 |
61 = 93 ] 125 }
62 > 94 ^ 126 ~
63 ? 95 _
2. Kata kunci Playfair Cipher diinputkan terlebih dahulu oleh user untuk proses enkripsi dan dekripsi pesan, selanjutnya dibentuk matriks kunci yang terdiri dari karakter ASCII seperti pada table 4.1 dan juga kata kunci itu sendiri. 3. Perhitungan kompleksitas algoritma dengan notasi big-O dilakukan secara
manual.
4.2.1 Pengujian Proses Enkripsi-Kompresi
Sebagai contoh implementasi pada kasus ini, proses enkripsi dan kompresi digunakan plainteks : MAMA dengan kata kunci : ilkom.
(54)
Proses enkripsi sebagai berikut:
Plainteks dalam bentuk bigram : MA MA Matriks kunci dapat dilihat pada Tabel 4.1.
Tabel 4.1 Matriks kunci
i l k o m
sp ! " # $
% & ' ( )
* + , - .
/ 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 j n
p q r s t
u v w x y
z { | } ~
Dengan menggunakan matriks kunci “ilkom” pada Tabel 4.1, bigram “MA” terlebih
dahulu dienkripsi, hasilnya yaitu “P>” selanjutnya matriks kunci diputar. Pada matriks kunci, huruf yang berada disekitar „M‟ diputar searah jarum jam, sehingga hasilnya
dapat dilihat pada Tabel 4.2.
Tabel 4.2 Matrisk 4 huruf disekitar huruf „M‟ setelah diputar
i l k o m
sp ! " # $
% & ' ( )
* + , - .
/ 0 1 2 3
4 5 6 7 8
9 : ; < =
(55)
C D E F G
H I J K L
R M O P Q
S N T U V
W X Y Z [
\ ] ^ _ `
a b c d e
f g h j n
p q r s t
u v w x y
z { | } ~
Selanjutnya huruf yang berada disekitar „A‟ diputar berlawanan arah jarum jam
sehingga hasilnya dapat dilihat pada Tabel 4.3.
Tabel 4.3 Matriks 4 huruf disekitar huruf „A‟ setelah diputar
i l k o m
sp ! " # $
% & ' ( )
* + , - .
/ 0 1 2 3
4 5 6 7 8
9 : ; < =
> ? @ B G
C D E A F
H I J K L
R M O P Q
S N T U V
W X Y Z [
\ ] ^ _ `
a b c d e
f g h j n
p q r s t
u v w x y
z { | } ~
Kunci matriks pada Tabel 4.3 digunakan untuk mengenkripsi bigram kedua pada
plainteks, menjadi “PD”.
Dengan menggunakan teknik pemutaran kunci dua arah, maka cipherteks yang
(56)
Selanjutnya cipherteks yang dihasilkan dikompresi dengan algoritma RLE, hasilnya
sebagai berikut : “P>PD”.
Proses enkripsi pesan dapat dilakukan setelah user memasukan file teks yang
ingin di proses dengan memilih tombol “buka file” lalu file dibaca dan sistem akan menampilkan ukuran file dan panjang karakter pesan. Selanjutnya user mengisi kata kunci dan memilih tombol “enkripsi”. Kemudian sistem akan menampilkan hasil Ciphertext dan perhitungan waktu eksekusi proses. Setelah itu user memilih tombol
“kompresi” untuk pemampatan file ciphertext, kemudian sistem menampilkan hasil kompresi file beserta perhitungan waktu eksekusi proses dan panjang karakter setelah pesan dikompresi. Tampilan hasil proses enkripsi-kompresi dapat dilihat pada Gambar 4.8.
Gambar 4.8 Tampilan pengujian Enkripsi-Kompresi
Gambar 4.8 menjelaskan hasil enkripsi dan kompresi dari plainteks „MAMA‟ pada sistem. Dengan kata kunci „ilkom‟ ditampilkan cipherteks dan hasil kompresi pesan beserta jumlah karakternya.
(57)
4.2.2 Pengujian Proses Dekompresi-Dekripsi
Hasil dekompresi dengan pesan : “P>PD” adalah : “P>PD”. Hasil dekripsi pesan
dengan kata kunci “ilkom” adalah sebagai berikut : Cipherteks dalam bentuk bigram : “P> PD”
Matriks kunci yang dibentuk dari kata kunci “ilkom” dapat dilihat pada Tabel 4.1.
Proses dekripsi pesan dilakukan dengan mengenkripsi bigram pertama yaitu “P>” terlebih dahulu, hasilnya yaitu “MA”. Selanjutnya dilakukan teknik pemutaran kunci 2
arah pada bigram plainteks yang telah dihasilkan. Huruf disekitar „M‟ diputar searah jarum jam, dan huruf „A‟ diputar berlawanan arah jarum jam, hasilnya dapat dilihat
pada Tabel 4.4.
Tabel 4.4 Matriks hasil perputaran „M‟ dan „A‟
i l k o m
sp ! " # $
% & ' ( )
* + , - .
/ 0 1 2 3
4 5 6 7 8
9 : ; < =
> ? @ B G
C D E A F
H I J K L
R M O P Q
S N T U V
W X Y Z [
\ ] ^ _ `
a b c d e
f g h j n
p q r s t
u v w x y
z { | } ~
Dengan menggunakan matriks kunci pada Tabel 4.4, bigram cipherteks kedua yaitu
(58)
Dengan menggunakan teknik pemutaran kunci dua arah, maka pesan “P>PD” dapat didekripsi menjadi pesan awal yaitu “MAMA”
Proses dekompresi-dekripsi pesan pada sistem dapat dilakukan setelah user memasukan file teks yang telah di enkripsi dan dikompresi dengan memilih tombol
“buka file” lalu file dibaca dan sistem akan menampilkan ukuran file dan panjang
karakter pesan. Setelah itu user memilih tombol “dekompresi” untuk mngembalikan
file ke bentuk ciphertext serta menampilkan waktu eksekusi proses. Selanjutnya user mengisi kata kunci sama dengan kata kunci untuk proses enkripsi dan memilih tombol
“dekripsi”, kemudian sistem akan menampilkan plaintext dan perhitungan waktu eksekusi proses. Tampilan hasil proses dekompresi dan dekripsi dapat dilihat pada Gambar 4.9.
Gambar 4.9 Tampilan pengujian Dekompresi-Dekripsi
Gambar 4.9 menjelaskan hasil dekompresi dan dekripsi ciphertext terkompresi. Dengan kata kunci „ilkom‟ ditampilkan hasil dekompresi pesan yaitu ciphertext dan pesan asli yaitu plaintext beserta jumlah karakternya.
(59)
4.2.3 Pengujian Proses Kompresi-Enkripsi
Sebagai contoh implementasi pada kasus ini, proses kompresi dan enkripsi digunakan plainteks dengan karakter berulang berurut : “AAAABBBBBB” dengan kata kunci : ilkom.
Proses kompresi sebagai berikut:
Plainteks “A” mengalami perulangan sebanyak 4 kali dan plainteks “B” mengalami perulangan sebanyak 6 kali maka kompresi dari plainteks “AAAABBBBBB” adalah :
“4A6B”.
Proses enkripsi sebagai berikut :
Plainteks dalam bentuk bigram : 4A 6B
Dengan menggunakan matriks kunci pada Tabel 4.1, bigram pertama yaitu “4A” dapat dienkripsi menjadi “7>”. Selanjutnya karakter disekitar „4‟ diputar searah jarum jam
,sehingga matriks hasil dapat dilihat pada Tabel 4.5.
Tabel 4.5 Matrisk hasil disekitar „4‟ setelah diputar
i l k o m
sp ! " # $
% & ' ( )
* + , - .
/ 0 1 2 3
9 4 6 7 8
: 5 ; < =
> ? @ 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 j n
p q r s t
u v w x y
(60)
Selanjutnya karakter disekitar „A‟ diputar berlawanan arah jarum jam, dan hasilnya
dapat dilihat pada Tabel 4.6.
Tabel 4.6 Matrisk hasil disekitar „A‟ setelah diputar
i l k o m
sp ! " # $
% & ' ( )
* + , - .
/ 0 1 2 3
9 4 6 7 8
: 5 ; < =
> ? @ B G
C D E A F
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 j n
p q r s t
u v w x y
z { | } ~
Kunci matriks pada Tabel 4.6 digunakan untuk mengenkripsi bigram kedua pada
plainteks, yaitu “6B” menjadi “7@”.
Dengan menggunakan teknik pemutaran kunci dua arah, maka cipherteks yang
dihasilkan dari plainteks yg telah terkompresi yaitu “4A6B” adalah : “7>7@”
Proses kompresi pesan pada sistem dapat dilakukan setelah user memasukan
file teks yang ingin diproses dengan memilih tombol “buka file” lalu file dibaca dan sistem akan menampilkan ukuran file serta panjang karakter pesan. Setelah itu user
memilih tombol “kompresi” dan selanjutnya mengisi kata kunci untuk menghasilkan
ciphertext dari pesan. Tampilan hasil proses kompresi dan enkripsi dapat dilihat pada Gambar 4.10
(61)
.Gambar 4.10 Tampilan pengujian Kompresi-Enkripsi
Gambar 4.10 menjelaskan hasil kompresi dan enkripsi dari plaintext
“AAAABBBBBB”. Dengan kata kunci „ilkom‟ ditampilkan hasil kompresi pesan dan ciphertext beserta jumlah karakternya.
4.2.4 Pengujian Proses Dekripsi-Dekompresi Cipherteks dalam bentuk bigram : 7> 7@
Dengan menggunakan kata kunci “ilkom” matriks kunci pada Tabel 4.1 digunakan
untuk mendekripsi pesan. Untuk bigram pertama yaitu “7>” plainteks yang dihasilkan
adalah “4A”, selanjutnya untuk mendekripsi bigram kedua yaitu “7@” dilakukan perputaran kunci terhadap karakter disekitar „4‟ diputar searah jarum jam dan karakter disekitar „A‟ diputar berlawanan arah jarum jam. Matriks hasil perputaran dapat dilihat pada Tabel 4.7.
(62)
Tabel 4.7 Matriks hasil setelah perputaran
i l k o m
sp ! " # $
% & ' ( )
* + , - .
/ 0 1 2 3
9 4 6 7 8
: 5 ; < =
> ? @ B G
C D E A F
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 j n
p q r s t
u v w x y
z { | } ~
Dengan menggunakan matriks kunci pada Tabel 4.7, bigram cipherteks kedua yaitu
“7@” didekripsi menjadi “6B”.
Dengan menggunakan teknik pemutaran kunci dua arah, maka cipherteks “7>7@” dapat didekripsi menjadi pesan yaitu “4A6B”. Pesan 4A6B bukan merupakan
plainteks awal, dilakukan dekompresi : 4 adalah angka yang merupakan nilai perulangan dari karakter A, 6 adalah angka yang merupakan nilai perulangan dari karakter B, sehingga didapat palinteks awal adalah : “AAAABBBBBB”
Proses dekripsi pesan pada sistem dapat dilakukan setelah user memasukan file
teks yang telah di enkripsi dan dikompresi dengan memilih tombol “buka file” lalu file dibaca dan sistem akan menampilkan ukuran file dan panjang karakter pesan. Setelah itu user user mengisi kata kunci yang sama dengan kata kunci untuk proses enkripsi,
memilih tombol “dekripsi”. Selanjutnya memilih tombol “dekompresi” untuk menampilkan plaintext dan perhitungan waktu eksekusi proses. Tampilan hasil proses dekripsi dan dekompresi dapat dilihat pada Gambar 4.11.
(63)
Gambar 4.11 Tampilan pengujian Dekripsi-Dekompresi
Gambar 4.11 menjelaskan hasil dekripsi dan dekompresi dari ciphertext terkompresi.
Dengan kata kunci „ilkom‟ ditampilkan hasil dekripsi pesan yaitu ciphertext dan pesan asli yaitu plaintext beserta jumlah karakternya.
4.2.5 Hasil Pengujian Algoritma terhadap waktu
Pada pengujian kali ini akan dilakukan dengan menggunakan 3 plaintext dengan jumlah karakter yang berbeda. Pada masing-masing plaintext akan dilakukan pengujian sebanyak 3 kali dengan kunci yang berbeda terhadap waktu proses enkripsi dan kompresinya. Pengujian terhadap waktu proses dapat dilihat pada Table 4.8 .
Tabel 4.8 Pengujian terhadap waktu proses
Plainteks Ukuran
Awal Cipherteks Hasil Kompresi
Ukuran Akhir
Waktu Proses
Rata-rata waktu
Ananda Dwi
Putri 16
Bjetec!CykoNquvk Bjetec!CykoNquvk
16
0,1153196 0.181410
9
(64)
@an' #&CygnSyppl @an' #&CygnSy2pl 0.0754886 Kompresi lossless run length encoding dan kriptografi simetris playfair cipher 78 P#istcpoi!m}ymnoki v}wl*zhnnr%}hn&ak aj.rcj2mq$dd{r!ga~5( {$rdvs(;qob)zh''<tl{q ke P#istcpoi!m}ymnoki v}wl*zh2nr%}hn&ak aj.rcj¥2mq$2d{r!ga~ ¥5({$rdvs(;qob)zh2'< tl{qke 78 0,3619115 0.382058 8 Lnnlqcjg%jrioi)ov$}s t+x$mhgq,+jkyqmqz 0mkz/!uqzgtyakjt7bq o,q$qb9jt#ghkt&:a|hn 6+ L2nlqcjg%jrioi)ov$}s t+x$mhgq,+jkyqmqz ¥0mkz/!uqzgtyakjt¥7 bqo,q$qb¥9jt#ghkt&: a|hn¥6+ 0.4092215 Nkjkpgmhdrujpwquo atl +qgaflkdl"^s!}'{a%d-nbtqu}urj$}_%x_tjc| xe#'v"xg.q)ate$v&- Nkjkpgmhdrujpwquo atl +qgaflkdl"^s!}'{a%d-nbtqu}urj$}_%x_tjc| xe#'v"xg.q)ate$v&- 0.3750435 Kompresi adalah sebuah proses mengubah ukuran data menjadi lebih kecil dari ukarannya yang semula sehingga dapat lebih menghemat kebutuhan tempat penyimpana n dan waktu
untuk transmisi data. 189 P#istcpo$bfjoqw"qtv {~f){hk|sr,&igxhvuz-rhypid*gedh0eotd!ge 1qunmq8ipju!0j,{r1e pl(lbyp,<qlxw<|m'i24 <f&)&q|n4?}1g8w@ -rg)(G+(oq%(,3yGrrpi z&45/Bi+*!li@&zzo u8o6/>&FsD&PjHnv iLi'bi/Uy!K&o5tq/[sJ (S"j P#istcpo$bfjoqw"qtv {~f){hk|sr,&igxhvuz-rhypid*gedh¥0eotd!g e¥1qunmq¥8ipju!¥0j, {r¥1epl(lbyp,<qlxw<| m'i¥2¥4<f&)&q|n¥4? }¥1g¥8w@-rg)(G+(oq%(,¥3yG2r piz&¥4¥5/Bi+*!li@ &2zou¥8o¥6/>&FsD &PjHnviLi'bi/Uy!K& o¥5tq/[sJ(S"j 189 0,4802678 0.505719 Lnnlqcjg#bh#s&f#g( %z.ialhif.g&h0wnz% +r(|$co.w1q/f1ei dt2jy4n !xi1z #mv2s<fm/z$<i=dx}; 2o9}f9j7q$};>f4y||nx @FvCfHj@"?.$mB} 2fh$2u=%;.:-l|'dE|@h2zvF#@f:$' m+vHoNrCxUoQqY 4'xRdgmd*Sc$_"%+ }`oX$`lw3g L2nlqcjg#bh#s&f#g( %z.ialhif.g&h¥0wnz %+r(|$co.w¥1q/f¥1ei dt¥2jy¥4n !xi¥1z #mv¥2s<fm/z$<i=dx };¥2o¥9}f¥9j¥7q$};> f¥4y2|nx@FvCfHj@" ?.$mB}¥2fh$¥2u=%; .:-l|'dE|@h¥2zvF#@f:$' m+vHoNrCxUoQqY ¥4'xRdgmd*Sc$_"% +}`oX$`lw¥3g 0.4543715 Nkjkpgmh!da(k#f%p s^o*s#io}qwq)et$f~_ *g(ex)k'$,% k2.o|ei6&g*`{`ed5{zl ob5#<lm."|<e;+kc;.|> +p8wryh|B8ti)oinoB D)HsF|Dpgj~)>or{u &noF+<"xy$xduMtB r"kbH$Bsok--}bJtS$GtX$KvY'k$J $0(00S'iv$lkjlsXmfh` 4% Nkjkpgmh!da(k#f%p s^o*s#io}qwq)et$f~_ *g(ex)k'$,% k¥2.o|ei¥6&g*`{`ed¥ 5{zlob¥5#<lm."|<e;+ kc;.|>+p¥8wryh|B¥8ti )oinoBD)HsF|Dpgj~) >or{u&noF+<"xy$xd uMtBr"kbH$Bsok2-}bJtS$GtX$KvY'k$J $¥0(2¥0S'iv$lkjlsXm fh`¥4% 0.5825178
(65)
Hasil pengujian waktu proses yang didapat berdasarkan masing-masing plaintext dengan jumlah karakter yang berbeda-beda dapat diilustrasikan pada sebuah grafik pada Gambar 4.12.
Gambar 4.12 Grafik Hubungan Panjang Plainteks dengan Waktu
Pada Gambar 4.12 ditunjukkan lama waktu yang dibutuhkan untuk mengenkripsi dan kompresi plainteks 12 karakter adalah 0.5 sekon, lama waktu yang dibutuhkan untuk mengenkripsi dan kompresi plainteks 78 karakter adalah 1.1 sekon, sedangkan lama waktu yang dibutuhkan untuk mengenkripsi dan kompresi pesan dengan jumlah karakter sebanyak 189 adalah 1.5 sekon. Dari grafik yang ditunjukan pada Gambar 4.12 dapat dilihat bahwa hubungan antara jumlah plainteks berbanding lurus terhadap waktu proses enkripsi dan kompresi.
4.2.6 Hasil Pengujian String Homogen dana Heterogen
Pengujian ini menggunakan 2 jenis string yang berbeda pada proses kompresi dan dekompresinya, yaitu string yang terdiri dari deretan karakter yang sama (Homogen) dan string terdiri dari karakter yang berbeda (Heterogen). Hasil pengujian string Homogen dan Heterogen menggunakan algoritma RLE dapat dilihat pada Tabel 4.9 dan Tabel 4.10.
0 0,2 0,4 0,6 0,8 1 1,2 1,4 1,6
Plainteks 12 Karakter Plainteks 78 Karakter Plainteks 189 Karakter
W
a
k
tu
(
s)
Jumlah Plainteks
Grafik Panjang Plainteks dan Waktu
(66)
Tabel 4.9 Hasil Pengujian string Homogen
String Homogen No Jumlah
Karakter Jenis Karakter Ukuran sebelum Kompresi (Byte) Ukuran setelah
kompresi (Byte) Rc Cr Rd
1 14 1 14 6 2.34 42.80% 0.572
2 26 1 26 6 4.34 23.00% 0.77
3 42 1 42 6 7 14.20% 0.858
4 84 1 84 6 14 7.14% 0.928
5 150 1 150 7 21.4 4.67% 0.953
6 500 1 500 7 71.4 1.40% 0.986
Rata-rata 20.08 15.54% 0.8445
Tabel 4.10 Hasil Pengujian string Heterogen
String Heterogen No Jumlah
Karakter Jenis Karakter Ukuran sebelum Kompresi (Byte) Ukuran setelah
kompresi (Byte) Rc Cr Rd
1 14 2 14 7 2 50.00% 0.5
2 26 4 26 12 2.167 46.15% 0.538
3 42 6 42 16 2.625 38.10% 0.619
4 84 9 84 26 3.23 30.95% 0.69
5 150 12 150 39 3.846 26.00% 0.74
6 500 20 500 59 8.474 11.80% 0.882
Rata-rata 3.7237 33.83% 0.6615
4.2.7 Pengujian Kompleksitas Algoritma
Pada pengujian kali ini, menggunkan kompleksitas algoritma dengan notasi Big-O untuk mengetahui tingkat nilai masukan n suatu algoritma. Kompleksitas algoritma ini dapat dilihat dari kode program yang digunakan. Untuk kompleksitas algoritma enkripsi dengan Playfar Cipher ditunjukkan pada Tabel 4.11
Tabel 4.11 Kompleksitas Algoritma Enkripsi Playfair Cipher
Kode program Eksekusi
1 For x = 0 To 1 n
2 For i = 0 To 18 n2
3 For j = 0 To 4 n3
4 If bigram(x) = Matrik(i, j) Then n3
5 bigramx(x) = i n3
6 bigramy(x) = j n3
7 limit = True n3
(67)
9 Exit For
10 End If
11 End If
12 Next
13 If limit = True AndAlso x = 2 Then n2
14 Exit For
15 End If
16 Next
17 Next
18 If bigramx(0) = bigramx(1) Then 1
19 If bigramy(0) = 4 Then 1
20 cipher += Matrik(bigramx(0), 0) +
Matrik(bigramx(1), bigramy(1) + 1) 1
21 ElseIf bigramy(1) = 4 Then 1
22 cipher += Matrik(bigramx(0), bigramy(0) + 1) +
Matrik(bigramx(1), 0) 1
23 Else
24 cipher += Matrik(bigramx(0), bigramy(0) + 1)+
Matrik(bigramx(1), bigramy(1)+ 1) 1
25 End If
26 ElseIf bigramy(0) = bigramy(1) Then 1
27 If bigramx(0) = 18 Then 1
28 cipher += Matrik(0, bigramy(0))+ Matrik(bigramx(1) + 1, bigramy(1)) 1
29 ElseIf bigramx(1) = 18 Then 1
30 cipher += Matrik(bigramx(0) + 1, bigramy(0))+
Matrik(0, bigramy(1)) 1
31 Else
32 cipher += Matrik(bigramx(0) + 1, bigramy(0)) +
Matrik(bigramx(1) + 1, bigramy(1)) 1
33 End If
34 Else
35 cipher += Matrik(bigramx(0), bigramy(1)) +
Matrik(bigramx(1), bigramy(0)) 1
36 End If
Total eksekusi n+2n2+6n3+13
.
Kompleksitas algoritma enkripsi pada Playfair cipher tersebut adalah n+2n2+6n3+19 dengan Big-O = O(n3). Selanjutnya dihitung kompleksitas algoritma kompresi RLE yang ditunjukan pada Table 4.12.
Tabel 4.12 Kompleksitas Algoritma Kompresi RLE
Kode program Eksekusi
1 For i = 0 To s.Length - 2 n
2 If s(i) <> s(i + 1) OrElse i = s.Length - 2 Then n
3 If s(i) = s(i + 1) AndAlso i = s.Length - 2 Then n
4 ccnt += 1 n
5 End If
6 If ccnt = 1 Then n
7 srle += ("")) + s(i) If("1234567890".Contains(s(i)), "" + ESCAPE, n
8 Else
(68)
10 End If
11 If s(i) <> s(i + 1) AndAlso i = s.Length - 2 Then n
12 srle += (ESCAPE, "")) + s(i + 1) If("1234567890".Contains(s(i + 1)), "1" + n
13 End If
14 ccnt = 1 n
15 Else
16 ccnt += 1 n
17 End If
18 Next
Total eksekusi 11n
Kompleksitas algoritma kompresi pada RLE tersebut adalah 11n dengan Big-O = O(n). Selanjutnya dihitung kompleksitas algoritma dekripsi Playfair Cipher yang ditunjukan pada Table 4.13
Tabel 4.13 Kompleksitas Algoritma Dekripsi Playfair Cipher
Kode program Eksekusi
1 For x = 0 To 1 n
2 For i = 0 To 18 n2
3 For j = 0 To 4 n3
4 If bigram(x) = Matrik(i, j) Then n3
5 bigramx(x) = i n3
6 bigramy(x) = j n3
7 limit = True n3
8 If limit = True AndAlso x = 2 Then n3
9 Exit For
10 End If
11 End If
12 Next
13 If limit = True AndAlso x = 2 Then n2
14 Exit For
15 End If
16 Next
17 Next
18 If bigramx(0) = bigramx(1) Then 1
19 If bigramy(0) = 0 Then 1
20 plain += Matrik(bigramx(0), 4)+ Matrik(bigramx(1), bigramy(1) - 1) 1
21 ElseIf bigramy(1) = 0 Then 1
22 plain += Matrik(bigramx(0), bigramy(0) - 1) + Matrik(bigramx(1), 4) 1
23 Else
24 plain += Matrik(bigramx(0), bigramy(0) - 1) + Matrik(bigramx(1), bigramy(1) - 1) 1
25 End If
26 ElseIf bigramy(0) = bigramy(1) Then 1
27 If bigramx(0) = 0 Then 1
28 plain += Matrik(18, bigramy(0)) + Matrik(bigramx(1) - 1, bigramy(1)) 1
(69)
30 plain += Matrik(bigramx(0) - 1, bigramy(0)) + Matrik(18, bigramy(1)) 1
31 Else
32 plain += Matrik(bigramx(0) - 1, bigramy(0))+ Matrik(bigramx(1) - 1, bigramy(1)) 1
33 End If
34 Else
35 plain += Matrik(bigramx(0), bigramy(1)) + Matrik(bigramx(1), bigramy(0)) 1
36 End If
Total eksekusi n+2n2+6n3+13
.
Kompleksitas algoritma dekripsi pada Playfair cipher tersebut adalah n+2n2+6n3+13 dengan Big-O = O(n3). Selanjutnya dihitung kompleksitas algoritma dekompresi RLE yang ditunjukan pada Table 4.14.
Tabel 4.14 Kompleksitas Algoritma Dekompresi RLE
Kode program Eksekusi
1 For i = 0 To s.Length - 1 n
2 If "1234567890".Contains(s(i).ToString()) Then n
3 ccnt += s(i) n
4 Else
5 If s(i) = ESCAPE Then n
6 i += 1 n
7 End If
8 If ccnt = "" Then n
9 dsrle += s(i) n
10 ccnt = "" n
11 Else
12
dsrle += New [String](s(i),
Integer.Parse(ccnt)) n
13 ccnt = "" n
14 End If
15 End If
16 Next
Total eksekusi 10n
Kompleksitas algoritma untuk dekompresi pada algoritma RLE tersebut hasilnya adalah 10n dengan Big-O = O(n).
(70)
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan analisis, perancangan, dan pengujian dari penelitian pengamanan dan kompresi data teks menggunakan algoritma Playfair Cipher dan Run Length Encoding, maka diperoleh beberapa kesimpulan :
1. Proses enkripsi-dekripsi dan kompresi-dekompresi pada file teks dengan menggunakan algoritma Playfair Cipher dan Run Length Encoding memenuhi parameter keutuhan data.
2. Berdasarkan grafik hubungan antara waktu proses dengan panjang plainteks diperoleh hasil panjang plainteks berbanding lurus terhadap waktu. Semakin panjang plainteks maka waktu yang dibutuhkan juga akan semakin banyak. 3. Hasil pengujian kompresi String dengan karakter yang sama (homogen)
berdasarkan variabel Ratio of compression (Rc), Compression ratio (Cr),
Redundancy (Rd) dengan rasio kompresi rata-rata sebesar 33,83% dan String
dengan karakter berbeda (heterogen) sebesar 15,54%.
4. Kombinasi dengan mendahulukan proses kompresi dilanjutkan dengan proses enkripsi teks lebih baik digunakan untuk teks dengan banyak perulangan berurut, karna kombinasi keduanya berhasil terkompresi dengan baik.
5. Untuk proses kompresi maupun dekompresi algoritma Run Length Encoding memiliki kompleksitas yang sama yaitu O(n), sedangkan untuk proses enkripsi dan dekripsi algoritma Playfair Cipher kompleksitasnya adalah O(n3)
(71)
5.2. Saran
Adapun saran-saran yang dapat dipertimbangkan untuk tahap pengembangan penelitian ini antara lain :
1. Sistem ini hanya dapat mengamankan dan memampatkan file teks berformat *.txt, *.doc/docx. Sehingga untuk penelitian selanjutnya diharapkan dapat mengembangkan kombinasi algoritma Playfair Cipher dan Run Length Encoding untuk mengamankan dan memampatkan citra.
2. Untuk pengembangan sistem selanjutnya dapat mengombinasikan Playfair Cipher dengan algoritma kompresi lainnya seperti Arithmetic Coding, Huffman Coding dan sebagainya.
3.
Diharapkan untuk kedepannya sistem seperti ini dapat diterapkan pada media pengiriman pesan seperti sms, email dan sebagainya.(1)
ABSTRAK
Komunikasi dan bertukar informasi secara jarak jauh sudah sangat mudah dan praktis. Kemudahan ini menuntut peningkatan keamanan terhadap kerahasiaan data yang dikirim. Kriptografi adalah salah satu cara yang digunakan untuk menjaga kerahasian dari sebuah pesan, dimana pesan disamarkan menjadi sandi. Selain keamanan data yang perlu diperhatikan juga adalah kecepatan dalam pengiriman data tersebut. Kecepatan pengiriman ini tergantung dari ukuran informasi tersebut. Kompresi adalah proses pengubahan sekumpulan data menjadi bentuk kode dengan tujuan untuk menghemat kebutuhan tempat penyimpanan dan waktu untuk transmisi data. Dalam penelitian ini penulis mengkombinasi algoritma kriptografi Playfair Cipher dengan algoritma kompresi Run Length Encoding, serta menganalisa kedua algoritma menggunakan kompleksitas algoritma. waktu eksekusi pesan dengan 16 karakter adalah 0.54423 sekon, waktu eksekusi pesan dengan 78 karakter adalah 1.14617 sekon, dan waktu eksekusi pesan dengan 189 karakter adalah 1.51715 sekon. Hasil pengujian proses kompresi string Homogen dengan kompresi rasio rata-rata sebesar 33.83% dan sring Heterogen dengan kompresi rasio rata-rata-rata-rata sebesar 15,54%. Dapat disimpulkan jumlah karakter pada pesan berbanding lurus terhadap waktu.
(2)
ANALYSIS AND IMPLEMENTATION PLAYFAIR CIPHER CRYPTOGRAPHY ALGORITHM AND RUN LENGTH
ENCODING COMPRESSION ALGORITHM IN TEXT DATA SECURITY AND COMPRESSION
Communication and information exchange in long distance have been very simple and practical. This simplicity demands security increment toward data privacy that is sent. Cryptography is one of some techniques which is used to keep message privacy, which is, message is encrypted to be ciphertext. Besides data security, point that also need to be concerned is speed of data transmission. Speed of data transmission depends on size of that data. Compression is conversion process of data set to be code form that purposed to decrease memory usage and time of transmission data. In this experiment, writer combines Playfair Cipher cryptography algorithm with Run Length Encoding compression algorithm, and analyze both of algorithm by using algorithm complexity. Execution time for 16 characters is 0.54423 second, execution time for 78 characters is 1.14617 second, and execution time for 189 characters is 1.51715 second. The result of research show that the compression process of Homogeneous String with the average of compression ratio is 42.39 %, and the compression process of Heterogeneous String with the average of compression ratio is 84.36 %. So it can be concluded that amount of character in message is directly propotional to the time.
Keywords : Cryptography, Playfair Cipher, Compression, Run Length Encoding.
(3)
DAFTAR ISI
Hal.
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel x
Daftar Gambar xi
Bab 1 Pendahuluan
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Ruang Lingkup Masalah 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metodologi Penelitian 4
1.7 Sistematika Penulisan 5
Bab 2 Landasan Teori
2.1 Kriptografi 6
2.1.1 Pengertian Kriptografi 6
2.1.2 Jenis-jenis Algoritma Kriptografi 8 2.1.2.1 Algoritma Simetris 8 2.1.2.2 Algoritma Asimetris 8
2.2 Playfair Cipher 9
2.3 Kompresi Data 13
2.4 Run Length Encoding 15
2.5 Kompleksitas Algoritma 15
2.6 Penelitian yang Relevan 18
Bab 3 Analisis dan Perancangan
3.1 Analisis Sistem 19
3.1.1 Analisis Masalah 19
3.1.2 Analisis Kebutuhan 21
3.1.2.1 Kebutuhan Fungsional 21 3.1.2.2 Kebutuhan Nonfungsional 21
3.2 Perancangan Sistem 22
3.2.1 Flowchart 22
3.2.4.2 Flowchart Enkripsi Playfair Cipher 23 3.2.4.2 Flowchart Kompresi RLE 24 3.2.4.3 Flowchart Dekripsi Playfair Cipher 25 3.2.4.2 Flowchart Dekompresi RLE 26 3.2.4.4 Flowchart Sistem 27
3.2.2 Use Case Diagram 27
(4)
3.2.4 Sqeuence Diagram 32
3.3 Perancangan Antarmuka 33
3.3.1 Halaman Beranda 33
3.3.2 Halaman Enkripsi-Kompresi 34 3.3.3 Halaman Dekripsi-Dekompresi 36
3.3.4 Halaman Tentang 38
3.2.5 Halaman Bantuan 39
Bab 4 Implementasi dan Pengujian
4.1 Implementasi 40
4.1.1 Halaman Beranda 40
4.1.2 Halaman Proses 41
4.1.3 Halaman Tentang 44
4.1.4 Halaman Bantuan 44
4.2 Pengujian 45
4.2.1 Pengujian Proses Enkripsi-Kompresi 46 4.2.2 Pengujian Proses Dekompresi-Dekripsi 50 4.2.3 Pengujian Proses Kompresi-Enkripsi 52 4.2.4 Pengujian Proses Dekripsi-Dekompresi 54 4.2.5 Hasil Pengujian Algoritma Terhadap Waktu 56 4.2.6 Pengujian Kompleksitas Algoritma 59
Bab 5 Kesimpulan dan Saran
5.1 Kesimpulan 63
5.2 Saran 64
Daftar Pustaka 65
Listing Program A-1
Curriculum Vitae
(5)
DAFTAR TABEL
Hal.
TABEL 2.1. Contoh Matriks Kunci „ILKOM‟ 9
TABEL 2.2. Contoh Matriks Kunci 11
TABEL 2.3. Matriks Kunci 4 Huruf disekitar Huruf „A‟ Sebelum diputar 12
TABEL 2.4. Matriks Kunci 4 Huruf disekitar Huruf „A‟ Setelah diputar 12
TABEL 2.5. Matriks Kunci 4 Huruf disekitar Huruf „N‟ Sebelum diputar 13
TABEL 2.6. Matriks Kunci 4 Huruf disekitar Huruf „N‟ Setelah diputar 13
TABEL 2.7. Format Kode Karakter Berulang 15
TABEL 2.8. Perbandingan Pertumbuhan fungsi f dan g 17
TABEL 3.1. Spesifikasi Use Case Enkripsi Pesan 28
TABEL 3.2. Spesifikasi Use Case Kompresi Pesan 29
TABEL 3.3. Spesifikasi Use Case Dekompresi Pesan 29
TABEL 3.4. Spesifikasi Use Case Dekripsi Pesan 30
TABEL 4.1. Karakter ASCII yang digunakan 45
TABEL 4.2. Matriks Kunci 47
TABEL 4.3. Matriks 4 Huruf disekitar Huruf „M‟ Setelah diputar 47
TABEL 4.4. Matriks 4 Huruf disekitar Huruf „A‟ Setelah diputar 48
TABEL 4.5. Matriks Hasil Perputaran „M‟ dan „A‟ 50
TABEL 4.6. Matriks Hasil disekitar „4‟ Setelah diputar 52
TABEL 4.7. Matriks Hasil disekitar „A‟ Setelah diputar 53
TABEL 4.8. Matriks Hasil Perputaran „4‟ dan „A‟ 55
TABEL 4.9. Pengujian Terhadap Waktu Proses 56
TABEL 4.10. Hasil Pengujian String Homogen 59
TABEL 4.11. Hasil Pengujian String Heterogen 59
TABEL 4.12. Kompleksitas Algoritma Enkripsi Playfair Cipher 59
TABEL 4.13. Kompleksitas Algoritma Kompresi RLE 60
TABEL 4.14. Kompleksitas Algoritma Dekripsi Playfair Cipher 61 TABEL 4.15. Kompleksitas Algoritma Dekompresi RLE 62
(6)
DAFTAR GAMBAR
Hal. GAMBAR 2.1. Skema Proses Enkripsi dan Dekripsi 6
GAMBAR 2.2. Skema Kriptografi Simetris 8
GAMBAR 2.3. Skema Kriptografi Asimetris 9
GAMBAR 2.4. Grafik fungsi f dan g 17
GAMBAR 3.1. Diagram Ishikawa Masalah Penelitian 20 GAMBAR 3.2. Flowchart Enkripsi Playfair Cipher 23
GAMBAR 3.3. Flowchart Kompresi RLE 24
GAMBAR 3.4. Flowchart Dekripsi Playfair Cipher 25
GAMBAR 3.5. Flowchart Dekompresi RLE 26
GAMBAR 3.6. Flowchart Sistem 27
GAMBAR 3.7. Use Case Diagram 28
GAMBAR 3.8. Activity Diagram Enkripsi-Kompresi 31 GAMBAR 3.9. Activity Diagram Dekompresi-Dekripsi 32
GAMBAR 3.10. Sequence Diagram Sistem 33
GAMBAR 3.11. Rancangan Antarmuka Beranda 34
GAMBAR 3.12. Rancangan Antarmuka Enkripsi-Kompresi 35 GAMBAR 3.13. Rancangan Antarmuka Dekompresi-Dekripsi 37
GAMBAR 3.14. Rancangan Antarmuka Tentang 38
GAMBAR 3.15. Rancangan Antarmuka Bantuan 39
GAMBAR 4.1. Antar Muka Menu Utama 40
GAMBAR 4.2. Antar Muka Enkripsi-Kompresi 41
GAMBAR 4.3. Antar Muka Dekompresi-Dekripsi 42
GAMBAR 4.4. Antar Muka Kompresi-Enkripsi 43
GAMBAR 4.5. Antar Muka Dekripsi-Dekompresi 43
GAMBAR 4.6. Antar Muka Tentang 44
GAMBAR 4.7. Antar Muka Bantuan 45
GAMBAR 4.8. Tampilan Pengujian Enkripsi-Kompresi 49 GAMBAR 4.9. Tampilan Pengujian Dekompresi-Dekripsi 51 GAMBAR 4.10. Tampilan Pengujian Kompresi - Enkripsi 54 GAMBAR 4.11. Tampilan Pengujian Dekripsi-Dekompresi 56 GAMBAR 4.12. Grafik Hubungan Panjang Plainteks dengan Waktu 58