Implementasi Algoritma Kunci Publik Luc dan Algoritma Kompresi Goldbach Codes untuk Perancangan Aplikasi Pengamanan dan Kompresi File Pdf
Listing Program
Pembangkit Kunci.VB
Public NotInheritable Class LUC
Private Sub New() End Sub
Private Shared rng As New RNGCryptoServiceProvider()
Public Shared e As BigInteger, N As BigInteger, tN As BigInteger, sN As BigInteger
Public Shared d As BigInteger
Public Shared p As BigInteger, q As BigInteger
'public static BigInteger [] enk_char;
Private Shared rnd As Byte() = New Byte(3) {} Public Shared Sub hasil_kunci()
Do While p = q
p = generate_bil_prima() q = generate_bil_prima() Loop
N = CType(p * q, BigInteger) tN = generate_tN(p, q)
sN = lcm(New BigInteger() {CType(p, BigInteger) - 1, CType(q,
BigInteger) - 1, CType(p, BigInteger) + 1, CType(q, BigInteger) + 1}) e = must_gdc_with(tN, sN)
d = InverseModular(e, sN)
System.Diagnostics.Debug.WriteLine(GCD(e, sN)) System.Diagnostics.Debug.WriteLine((d * e) Mod sN) End Sub
Private Shared Function must_gdc_with(p As BigInteger, n As BigInteger) As UInt16
Dim c_e As UInt16
Do
rng.GetBytes(rnd)
c_e = BitConverter.ToUInt16(rnd, 2)
Loop While GCD(c_e, p) <> 1 OrElse c_e >= p OrElse c_e >= n Return c_e
End Function
Private Shared Function generate_bil_prima() As UInt16
Dim c_prima As UInt16
Do
rng.GetBytes(rnd)
c_prima = CType(BitConverter.ToUInt16(rnd, 0) Mod 150, UInt16) Loop While c_prima < 85 OrElse Not Lehmann(c_prima)
Return c_prima End Function
Private Shared Function GCD(a As BigInteger, b As BigInteger) As BigInteger
If a Mod b = 0 Then
Return b End If
Return GCD(b, a Mod b) End Function
(2)
Private Shared Function generate_tN(p As BigInteger, q As BigInteger) As BigInteger
Return (p + 1) * (p - 1) * (q + 1) * (q - 1) End Function
Private Shared Function Lehmann(p As BigInteger) As Boolean
Dim tester As BigInteger, i As BigInteger = 0 'System.Diagnostics.Debug.WriteLine(p, "p"); Do
rng.GetBytes(rnd)
tester = (BitConverter.ToUInt16(rnd, 2) Mod p) tester = BigInteger.ModPow(tester, (p - 1) / 2, p) 'System.Diagnostics.Debug.WriteLine(tester, "tester"); If tester <> 1 AndAlso tester - p <> -1 Then
Return False
End If
'System.Diagnostics.Debug.WriteLine(i, "i"); i += 1
Loop While i < 5 Return True
End Function
Private Shared Function lcm(ParamArray empat As BigInteger()) As BigInteger
Dim hasil As BigInteger = 1
For Each bil As BigInteger In empat hasil = lcm(hasil, bil)
Next
Return hasil End Function
Private Shared Function lcm(a As BigInteger, b As BigInteger) As BigInteger
Return CType((a * b) / GCD(a, b), BigInteger) End Function
Public Shared Function InverseModular(a As BigInteger, b As BigInteger) As BigInteger
Dim x1 As BigInteger, y1 As BigInteger, x2 As BigInteger, y2 As BigInteger, q As BigInteger, temp As BigInteger, _
modulo As BigInteger = b If a < b Then
x1 = InlineAssignHelper(y2, 1) x2 = InlineAssignHelper(y1, 0) Else
x1 = InlineAssignHelper(y2, 0) x2 = InlineAssignHelper(y1, 1) End If
While b <> 0 q = a / b temp = b
b = a - (q * b) a = temp
temp = x2
x2 = x1 - (q * x2) x1 = temp
temp = y2
y2 = y1 - (q * y2) y1 = temp
End While
Return InlineAssignHelper(x1, If(x1 > 0, x1, modulo + x1)) End Function
(3)
FormEnk.VB
Public Class EnkripsiForm
'Private Shared luc As lucClass = New lucClass Private Shared strText As String
Private Shared enkripsiResult As String
Private Shared sb As New StringBuilder()
Private Sub BrowseFileEnkripsiButton_Click(sender As Object, e As EventArgs) Handles BrowseFileEnkripsiButton.Click
HasilEnkripsiTextBox.Text = "" SaveFileEnkripsi.Enabled = False
Dim filePath As String
If (OpenFileEnkripsiDialog.ShowDialog = DialogResult.OK) Then
filePath = OpenFileEnkripsiDialog.FileName.ToString Me.strText = String.Empty
Try
Dim reader As PdfReader = New PdfReader(filePath) For page As Integer = 1 To reader.NumberOfPages Dim its As ITextExtractionStrategy = New
iTextSharp.text.pdf.parser.LocationTextExtractionStrategy
Dim s As String = PdfTextExtractor.GetTextFromPage(reader, page, its)
s =
Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8,
Encoding.Default.GetBytes(s)))
Me.strText = Me.strText + s
Me.strText = Me.strText.Remove(Me.strText.Length - 1, 1) FileContentEnkripsiTextBox.Text = Me.strText
Next
reader.Close()
EnkripsiButton.Enabled = True
FilePathEnkripsiTextBox.Text = filePath Catch ex As Exception
MessageBox.Show(ex.Message) End Try
End If
End Sub
Private Sub EnkripsiButton_Click(sender As Object, e As EventArgs) Handles
EnkripsiButton.Click
SaveFileEnkripsi.Enabled = True
LUC.hasil_kunci()
Dim time As New System.Diagnostics.Stopwatch() time.Start()
Tampung.luc_c_kuncia = LUC.enkripsi(FileContentEnkripsiTextBox.Text) time.Stop()
waktu.Text = time.ElapsedMilliseconds.ToString() & " ms" pTextBox.Text = LUC.p.ToString()
qTextBox.Text = LUC.q.ToString nTextBox.Text = LUC.N.ToString tTextBox.Text = LUC.tN.ToString() eTextBox.Text = LUC.e.ToString rnTextBox.Text = LUC.sN.ToString() dTextBox.Text = LUC.d.ToString
Dim action As New Action(Of BigInteger)(AddressOf hasilenk) Array.ForEach(Tampung.luc_c_kuncia, action)
Tampung.hasil_enkripsi = EnkripsiForm.sb.ToString() HasilEnkripsiTextBox.Text = EnkripsiForm.sb.ToString()
(4)
End Sub
Private Shared Sub hasilenk(val As BigInteger) EnkripsiForm.sb.Append(val)
EnkripsiForm.sb.Append("-") End Sub
Private Sub SaveFileEnkripsi_Click(sender As Object, e As EventArgs)
Handles SaveFileEnkripsi.Click
If SaveFileEnkripsiDialog.ShowDialog = DialogResult.OK Then
Dim path As String = SaveFileEnkripsiDialog.FileName File.WriteAllText(path, sb.ToString())
'Dim fs As FileStream = File.Create(path) 'Dim info As Byte() = New
UTF8Encoding(True).GetBytes(LUC.d.ToString & " " & LUC.N.ToString & " " & Me.enkripsiResult)
'fs.Write(info, 0, info.Length) 'fs.Close()
MessageBox.Show("File tersimpan!") End If
End Sub
Private Sub FileContentEnkripsiTextBox_TextChanged(sender As Object, e As EventArgs) Handles FileContentEnkripsiTextBox.TextChanged
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) End Sub
Private Sub pTextBox_TextChanged(sender As Object, e As EventArgs) Handles
pTextBox.TextChanged End Sub
Private Sub waktu_TextChanged(sender As Object, e As EventArgs) Handles
waktu.TextChanged End Sub
EnkripDekrip.VB
Public Shared Function enkripsi(x As String) As BigInteger() Dim chars As Integer() = pecah_string(x)
Dim new_char As BigInteger() = New BigInteger(chars.Length - 1) {} Dim i As Integer = 0
For Each c_p As Integer In chars
new_char(i) = barisan_LUC(c_p, 1, e, N) i += 1
Next
Return new_char End Function
Public Shared Function dekripsi(enk As BigInteger()) As String
Dim chars As Integer() = New Integer(enk.Length - 1) {} Dim i As Integer = 0
For Each c_e As BigInteger In enk
chars(i) = CInt(barisan_LUC(c_e, 1, d, N)) i += 1
(5)
Next
Return gabung_string(chars) End Function
Private Shared Function pecah_string(x As String) As Integer() Dim chars As New List(Of Integer)()
Dim spasi As Char = " "c
Dim batas As Integer = 0, i As Integer = 0 If x.Length Mod 2 = 1 Then
batas = 1 End If
For i = 0 To x.Length - batas - 1 Step 2
Dim x1 As Integer = Math.Abs(Asc(x(i)) - 31) Dim x2 As Integer = Math.Abs(Asc(x(i + 1)) - 31) 'System.Diagnostics.Debug.WriteLine(x1)
'System.Diagnostics.Debug.WriteLine(x2) Dim char_gab As String = (x1).ToString() & (x2).ToString().PadLeft(2, "0"c)
System.Diagnostics.Debug.WriteLine(char_gab) Dim char_a As Integer = Integer.Parse(char_gab) chars.Add(char_a)
Next
If batas = 1 Then
Dim char_gab As String = Math.Abs(Asc(x(i)) - 31).ToString() & (Asc(spasi) - 31).ToString().PadLeft(2, "0"c)
Dim char_a As Integer = Integer.Parse(char_gab) chars.Add(char_a)
End If
Return chars.ToArray() End Function
Private Shared Function gabung_string(c_d As Integer()) As String
'int i = 0;
Dim sb As System.Text.StringBuilder = New StringBuilder() For Each a As Integer In c_d
System.Diagnostics.Debug.WriteLine(a \ 100, "x1 akhir") System.Diagnostics.Debug.WriteLine(a Mod 100, "x2 akhir") Dim x1Int As Integer = (a \ 100)
Dim x2Int As Integer = (a Mod 100)
Dim x1 As Char = Chr(If(x1Int = 23 OrElse x1Int = 21, 31 - x1Int, x1Int + 31))
Dim x2 As Char = Chr(If(x2Int = 23 OrElse x2Int = 21, 31 - x2Int, x2Int + 31))
sb.Append(x1) sb.Append(x2) Next
Return sb.ToString() End Function
Private Shared Function barisan_LUC(P As BigInteger, Q As BigInteger, e As BigInteger, N As BigInteger) As BigInteger
Dim Vold As BigInteger = 2 Dim Vnew As BigInteger = P
Dim temp As BigInteger, i As BigInteger = 2 While i <= e
temp = Vnew
Vnew = ((P * Vnew) - Vold) Mod N Vold = temp
i += 1 End While
(6)
Return InlineAssignHelper(Vnew, If(Vnew > 0, Vnew, N + Vnew)) End Function
Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value
As T) As T
target = value Return value End Function End Class
FormDekrip.VB
Public Class DekripsiForm
'Private Shared luc As lucClass = New lucClass Private Shared chiperText As String
Private Shared hasil As String
Private Sub BrowseFileDekripsiButton_Click(sender As Object, e As EventArgs) Handles BrowseFileDekripsiButton.Click
If OpenFileDekripsiDialog.ShowDialog = DialogResult.OK Then
Try
' Open the file using a stream reader.
Using sr As New StreamReader(OpenFileDekripsiDialog.FileName) ' Read the stream to a string and write the string to the console.
chiperText = sr.ReadToEnd() ChiperTextBox.Text = chiperText TextBox3.Text = LUC.N.ToString() TextBox7.Text = LUC.d.ToString() End Using
Catch ex As Exception
MessageBox.Show("The file could not be read:") Console.WriteLine(ex.Message)
End Try
End If
End Sub
Private Sub DekripsiButton_Click(sender As Object, e As EventArgs) Handles
DekripsiButton.Click
Dim time As New System.Diagnostics.Stopwatch() time.Start()
hasil = LUC.dekripsi(Tampung.luc_c_kuncia) time.Stop()
waktu.Text = time.ElapsedMilliseconds.ToString() & " ms" TextBox10.Text = hasil
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles
Button4.Click
'If SaveFileEnkripsiDialog.ShowDialog = DialogResult.OK Then 'Dim path As String = SaveFileEnkripsiDialog.FileName If SaveFileDialog1.ShowDialog = DialogResult.OK Then
Dim pdf As New PdfSharp.Pdf.PdfDocument() Dim pdfPage As PdfSharp.Pdf.PdfPage
Dim graph As PdfSharp.Drawing.XGraphics
Dim XFont As New PdfSharp.Drawing.XFont("Times New Roman", 12, PdfSharp.Drawing.XFontStyle.Regular)
(7)
graph = PdfSharp.Drawing.XGraphics.FromPdfPage(pdfPage)
graph.DrawString(hasil, XFont, PdfSharp.Drawing.XBrushes.Black, New PdfSharp.Drawing.XRect(0, 0,
pdfPage.Width.Point, pdfPage.Height.Point),
PdfSharp.Drawing.XStringFormat.TopLeft) pdf.Save(SaveFileDialog1.FileName)
pdf.Close()
End If
'Dim fs As FileStream = File.Create(path)
'Dim info As Byte() = New UTF8Encoding(True).GetBytes(LUC.d.ToString & " " & LUC.N.ToString & " " & Me.enkripsiResult)
'fs.Write(info, 0, info.Length) 'fs.Close()
MessageBox.Show("File tersimpan!") 'End If
End Sub End Class
FormKomp.VB
Public Class KompresiForm
Private Sub KompresiButton_Click(sender As Object, e As EventArgs) Handles
KompresiButton.Click
Dim sb As New Text.StringBuilder
Tampung.hasil_kompresi =
GoldBach.kompresi(System.Text.Encoding.Unicode.GetBytes(Tampung.hasil_enkripsi) )
For Each x As Byte In Tampung.hasil_kompresi sb.Append(x)
sb.Append("-") Next
If SaveFile.ShowDialog = Windows.Forms.DialogResult.OK Then
System.IO.File.WriteAllText(SaveFile.FileName, sb.ToString()) End If
FileContentKompresiTextBox.Text = sb.ToString() End Sub
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles
FileContentKompresiTextBox.TextChanged End Sub
Private Function HasilKompresiTextBox() As Object
Throw New NotImplementedException
End Function
Private Function SaveFileKompresi() As Object
Throw New NotImplementedException
End Function
Private Sub TableLayoutPanel1_Paint(sender As Object, e As PaintEventArgs)
(8)
End Sub
Private Sub HasilKompresi_Click(sender As Object, e As EventArgs) Handles
HasilKompresi.Click
If OpenFileKompresiDialog.ShowDialog = Windows.Forms.DialogResult.OK
Then
FilePathKompresiTextBox.Text = OpenFileKompresiDialog.FileName End If
End Sub
Private Sub ResetButton_Click(sender As Object, e As EventArgs) End Sub
End Class
KompDekomp.VB
Public NotInheritable Class GoldBach
Private Sub New() End Sub
Private Shared l_char As New Dictionary(Of Byte, Integer)() Private Shared Bil_Prima As New List(Of Integer)()
Private Shared eg_char As List(Of KeyValuePair(Of Byte, Integer)) Private Shared eg_encoding As New Dictionary(Of Byte, String)() Private Shared values As Byte()
Private Shared flag As Integer
Private Shared Sub susun_char() l_char.Clear()
For Each chars As Byte In values
If Not l_char.ContainsKey(chars) Then
l_char.Add(chars, 1) Else
l_char(chars) += 1 End If
Next
eg_char = l_char.ToList()
eg_char.Sort(Function(pair1, pair2) pair2.Value.CompareTo(pair1.Value)) End Sub
Private Shared Sub encoding() eg_encoding.Clear() Bil_Prima.Clear() Bil_Prima.Add(3) Dim i As Integer = 1
For Each pair As KeyValuePair(Of Byte, Integer) In eg_char eg_encoding.Add(pair.Key, e_goldbach(2 * (i + 3))) i += 1
Next
End Sub
Private Shared Function e_goldbach(i As Integer) As String
Dim sb As New StringBuilder()
Dim bil As Integer = 0, bil2 As Integer = 0 Dim bil_akhir As Integer = Bil_Prima.Last() For j As Integer = bil_akhir + 1 To i If lehmann(j) Then
(9)
End If
Next
For j As Integer = Bil_Prima.Count - 1 To 0 Step -1 bil = Bil_Prima(j)
bil2 = i - bil
If Bil_Prima.IndexOf(bil2) = -1 Then
Continue For
End If
If bil <= bil2 Then
Dim k As Integer = 1 bil = Bil_Prima(j + k) bil2 = i - bil
While Not Bil_Prima.Contains(bil2) bil = Bil_Prima(j + k)
bil2 = i - bil k += 1
End While
Exit For
End If
Next
sb.Append(1)
For j As Integer = Bil_Prima.IndexOf(bil) - 1 To 0 Step -1 If Bil_Prima(j) <> bil2 Then
sb.Insert(0, "0"c) Else
sb.Insert(0, "1"c) End If
Next
Return sb.ToString() End Function
Public Shared Function kompresi(s_values As Byte()) As Byte() flag = 0
Dim hasil As New List(Of Byte)()
Dim bitcount As Byte = 0, bitbuffer As Byte = 0 values = s_values
susun_char() encoding()
For Each val As Byte In values
For Each ch As Char In eg_encoding(val) bitbuffer <<= 1
'System.Diagnostics.Debug.Write(byte.Parse(ch.ToString())); bitbuffer = bitbuffer Or If(ch = "1"c, CByte(1), CByte(0)) bitcount += 1
If bitcount = 8 Then
hasil.Add(bitbuffer) bitcount = 0
bitbuffer = 0 End If
Next
Next
If bitcount > 0 Then
Dim cagak As Byte = Convert.ToByte(New
StringBuilder().Append(1).Append("0"c, bitcount).ToString(), 2) bitbuffer = bitbuffer Or cagak
flag = 1
hasil.Add(bitbuffer) End If
Return hasil.ToArray() End Function
(10)
Public Shared Function dekompresi(s_values As Byte()) As Byte() Dim hasil As New List(Of Byte)()
Dim i As Integer = 0
Dim sb As New StringBuilder() For i = 0 To s_values.Length - 2
sb.Append(Convert.ToString(s_values(i), 2).PadLeft(8, "0"c)) Next
If flag = 1 Then
sb.Append(Convert.ToString(s_values(i), 2).Remove(0, 1)) Else
sb.Append(Convert.ToString(s_values(i), 2).PadLeft(8, "0"c)) End If
decoding(hasil, sb) Return hasil.ToArray() End Function
Private Shared Sub decoding(hasil As List(Of Byte), sb As StringBuilder) Dim bin As New StringBuilder()
Dim n As Integer = 0, i As Integer = 0 While i < sb.Length
If sb(i) = "1"c Then
n += 1 End If
bin.Append(sb(i)) If n = 2 Then
hasil.Add(eg_encoding.FirstOrDefault(Function(x) x.Value = bin.ToString()).Key)
bin.Clear() n = 0 End If
i += 1 End While
End Sub
Private Shared Function lehmann(i As Integer) As Boolean
Dim a As New Random() Dim coba As Double = 0 For j As Integer = 1 To 10 coba = a.[Next](2, i - 1)
coba = CDbl(BigInteger.ModPow(CType(coba, BigInteger), (i - 1) \ 2, i))
If coba <> 1 AndAlso coba - i <> -1 Then
Return False End If Next Return True End Function End Class FormDekomp.VB
Public Class DekompresiForm
(11)
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles
Button3.Click
Tampung.hasil_dekompresi = GoldBach.dekompresi(Tampung.hasil_kompresi) Dim action As New Action(Of BigInteger)(AddressOf hasilenk)
Array.ForEach(Tampung.luc_c_kuncia, action)
If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
System.IO.File.WriteAllText(SaveFileDialog1.FileName, sb.ToString())
End If
TextBox2.Text =
System.Text.Encoding.Unicode.GetString(Tampung.hasil_dekompresi) End Sub
Private Shared Sub hasilenk(val As BigInteger) sb.Append(val)
sb.Append("-") End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles
Button1.Click
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
TextBox1.Text = OpenFileDialog1.FileName End If
End Sub
Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles
Panel1.Paint End Sub End Class
(12)
DAFTAR RIWAYAT HIDUP
Saya yang bertanda tangan dibawah ini:
DATA PRIBADI
Nama : Sabrina Ridha Sari Sinaga
Alamat : Jln. Klambir 5 Gg: Uncu
Email : [email protected]
Tempat/Tanggal Lahir : Medan/ 10 Agustus 1992 Jenis Kelamin : Perempuan
Status : Belum Menikah
PENDIDIKAN
1998-2004 : SD SWASTA SUPRIYADI MEDAN
2004-2007 : SMP NEGERI 18 MEDAN
2007-2010 : SMA SWASTA DHARMA PANCASILA MEDAN
2010-2013 : DIII-Teknik Informatika Universitas Sumatera Utara 2014-2016 : S1 Ekstensi Ilmu Komputer Universitas Sumatera Utara
SEMINAR
Seminar Nasional Literasi Informasi (SENARAI) Universitas Sumatera Utara
Demikianlah Daftar Riwayat Hidup ini saya buat dengan sebenarnya.
Hormat Saya
(13)
DAFTAR PUSTAKA
Batten, Lyyn Margaret. 2013. Public Key Cryptography Applications and Attacks. IEEE (The Institute of Electric and Electronics Engineers). New Jersey. Bentley & Jeffrey L. Whitten. 2007. Systems Analysis and Design for The Global
Enterprise Sevent Edition. McGraw Hill: New York.
Forouzan, B.A. 2007. Cryptography & Network Security. Tata McGraw Hill: New Delhi.
Irawan, A.F. 2013. Sistem Keamanan Pesan Pada Android Gingerbread (2.3.4) dengan Algoritma LUC. Skripsi. Universitas Jember.
Kromodimoeljo, S. 2009. Teori & Aplikasi Kriptografi, SPK IT CONSULTING. Lubis, W.A. 2013. Penyandian Data Teks dengan Algoritma Elgamal dan Algoritma
Kompresi Data dengan Algoritma Elias Gamma Code. Skripsi. Universitas Sumatera Utara.
Pahlevy, R.T. 2010. Rancang Bangun Sistem Pendukung Keputusan Menentukan Penerima Beasiswa dengan Menggunakan Metode Simple Additive Weighting
(SAW). Skripsi. Universitas Pembangunan Nasional Veteran.
Putra, E. 2013. Implementasi Kriptografi Kurva Eliptik Dengan Algoritma Elgamal Dan Metode Pembangkitan Bilangan Prima Rabin-Miller Untuk Pengamanan
File Teks. Skripsi. Universitas Sumatera Utara.
Merdiyan, M. 2005. Implementasi Algoritma Run Length, Half Byte dan Huffman Untuk Kompresi File. Jurnal Seminar Nasional Aplikasi Teknologi
Informasi 3(2):79-84
Munir, Rinaldi. 2006. Kriptografi. Informatika.stei.itb.ac.id. 26 Maret 2016 (diakses 26 Maret 2016).
(14)
Salomon, David. 2007. Variable-Lenghts Code For Data Compression. Springer: New York.
Saputra, R., Yismianto, B., Suhartono. 2006, Kriptografi Teks Dengan Menggunakan Algoritma LUC. Prosiding Seminar SPMIPA 2006, pp1-5.
Sansani, S. 2008. Penggunaan Aritmatika Modulo dan Balikan Modulo Pada Modifikasi Pada Algoritma Knapsack. Informatika.stei.itb.ac.id, 26 Maret 2016 (diakses 26 Maret 2016).
Sinaga, P.H.R. 2014. Analisis Perbandingan Kinerja Kriptografi Algoritma RSA-CRT
dan LUC Untuk Mengamankan Data Teks. Skripsi. Universitas Sumatera
Utara.
Smith, P. & M, Lennon. 1993. LUC: A New Public Key System. In Ninth IFIP
Symposium on Computer Security ed. E. G. Douglas, pp. 103-117. Elsevier
Science Publisher.
Taufiq, M. 2010. Penerapan Algoritma Kriptografi ElGamal untuk Pengaman File Citra. Jurnal Electrics Electronics Communications Controls Informatics
System EECCIS 4(1): 8-11.
Tammam, G. 2014. Pengertian Pseudocode dan Contohnya. Academia.edu , 3 Oktober 2016 (diakses 3 Oktober 2016).
Yunos, F., Atan, A.M., Said, M.R.M. Transformasi Polifungsi LUC Dalam Sistem Kriptografi. Jurnal Teknologi 37 (C ) Dis. 2002: 21-38.
Zelvina, A., Effendi, S., Arisandi, D,. 2012. Perancangan Aplikasi Pembelajaran Kriptografi Kunci Publik Elgamal Untuk Mahasiswa. Jurnal Dunia
(15)
BAB 3
ANALISIS PERANCANGAN SISTEM
Pada bab 3 akan membahas analisis terhadap sistem yang akan dirancangan dengan menggunakan algoritma kriptografi LUC dan algoritma kompresi Goldbach Codes.
3.1 Analisis
Dalam merancang sistem, diperlukan analisis terhadap sistem yang akan dirancang terlebih dahulu. Tujuan dari analisis ini agar sistem yang dirancang menjadi tepat guna dan ketahanan dari sistem tersebut akan lebih terjaga. Di samping itu dengan dilakukannya analisis, akan dapat mempermudah kerja kita dalam membuat sistem, dan jika suatu saat nanti ada perbaikan atau penambahan dalam sistem tersebut, maka akan mudah untuk diselesaikan.
Analisis sistem terdiri dari tahapan-tahapan berbeda yang mendekripsikan pengembangan sistem. Dalam tugas akhir ini, ada dua fase analisis yaitu: analisis masalah, dan analisis kebutuhan.
3.1.1 Analisis masalah
Untuk dapat mengurangi ancaman yang terjadi saat melakukan pertukaran informasi yang sangat rahasia, dapat dilakukan dengan melakukan pengkodean untuk informasi yang akan dikirim ataupun disimpan.
Salah satu yang digunakan untuk perancangan sistem dalam analisis masalah adalah dengan menggunakan diagram ishikawa. Kegunaan diagram ishikawa dalam menganalisis masalah adalah untuk mendapatkan sebab akibat dari permasalahan yang timbul dari beberapa sumber utama yang memberikan kontribusi paling signifikan, dimana sumber-sumber ini kemudian dipilih untuk proses perbaikan.
(16)
Pada gambar 3.1 merupakan gambar diagram ishikawa, kepala ikan ditulis disebelah kanan adalah masalah, dari garis horizontal utama, dibuat garis diagonal yang menjadi cabang. Setiap cabang memiliki sebab utama dari masalah yang ditulis. Sebab diinterpretasikan sebagai “cause”
Gambar 3.1 Diagram Ishikawa dalam Masalah Penelitian Pengamanan dan Kompresi File PDF
Permasalahan utama (effect) pada gambar 3.1 ditunjukkan oleh ujung garis horizontal utama yang berada ditengah, yaitu mengamankan file PDF dengan algoritma LUC lalu mengkompresikannya dengan menggunakan Goldbach Codes.
Pada diagram ishikawa, people sering menyimpan data dengan kapasistas yang cukup besar sehingga memadatkan partisi penyimpanan. People juga sering melakukan transfer data melalui email yang mana proses pengiriman melalui email terbilang cukup cepat tergantung besar atau kecilnya file yang akan dikirim. People sering menyimpan informasi data yang bersifat rahasia, sehingga menimbulkan kecurigaan kepada pihak yang tidak berwenang terhadap informasi tersebut. Masalah yang timbul akibat informasi data yang bersifat rahasia adalah upaya pembobolan dari pihak lain.
(17)
Cause material berupa file PDF sering digunakan diintansi pemerintahan
seperti dalam membuat surat, dokumen negara atau yang lainnya. Dalam bidang akademis, file PDF juga sering digunakan untuk pembuatan makalah, jurnal bahkan
e-book.
Garis diagonal merupakakan cabang dari garis horizontal utama yang merupakan kategori-kategori yang mewakili sebab utama (cause). Dari sebab-sebab yang muncul tersebut terdapat akar dari permasalahan, yaitu adanya pihak ketiga yang ingin mengetahui isi yang terdapat didalam informasi dan hasil size enkripsi yang cukup besar, dan masing-masing algoritma memiliki kelemahan dan keunggulannya tersendiri. Sistem yang akan dibangun menggunakan Visual Studi 2012 yang memudahkan user untuk melakukan pengamanan dan kompresi file PDF.
3.1.2 Analisis kebutuhan sistem
Terdapat dua bagian dalam analisis kebutuhan sistem, yaitu kebutuhan fungsional dan kebutuhan non-fungsional. Kebutuhan fungsional menjelaskan proses-proses aktifitas yang dapat dilakukan oleh sistem dalam melakukan pelayanan yang dilakukan sistem dan kebutuhan yang dipenuhi oleh sistem, yaitu:
1. Fungsi Pembangkit Kunci
Dalam proses enkripsi dan dekripsi, sistem membutuhkan pembangkit kunci untuk memudahkan pengguna untuk menentukan kunci yang akan digunakan. Pada sistem yang digunakan, kunci yang dibangkitkan secara acak oleh sistem
.
a) Fungsi Enkripsi
Sistem mencari file pdf berupa plaintext yang dienkripsi oleh user. Sistem melakukan enkripsi dan menghasil ciphertext berupa .*txt. Sebelum melakukan proses enkripsi, sistem terlebih dahulu melakukan random proses untuk mencari kunci enkripsi.
(18)
b) Fungsi Dekripsi
Pada sistem, plaintext yang didapat merupakan hasil dari ciphertext yang dienkripsi. Pengguna sudah mempunyai kunci dekripsi ciphertext untuk mengubah menjadi
plaintext.
c) Fungsi Kompresi
Pada sistem, hasil cipherteks dengan kapasitas yang besar dikompresi hingga ukuran
file menjadi lebih kecil. Hasil ciphertext berupa (*txt) yang tersimpan didalam sistem.
Dalam hal ini, pengguna dapat memilih hasil enkripsi yang akan dikompresi.
d) Fungsi Dekompresi
Sistem melakukan dekompresi dengan string yang sama saat dengan berbentuk
ciphertext sebelum dikompresi.
2. Kebutuhan Non-Fungsional a) Performa
Sistem yang dibangun dapat menampilkan dan menyimpan hasil dari fungsi kriptografi dan kompresi yang dilakukan oleh sistem.
b) User friendly
Sistem yang dibangun memiliki tampilan yang mudah digunakan dan memiliki tampilan yang sederhana
c) Dokumentasi
(19)
d) Manajemen kualitas
Sistem yang dibangun memiliki kualitas yang baik yaitu pada saat proses pembangkit kunci dan dekripsi yang akurat.
3.1.3 Analisis proses
Sistem yang dibangun menggunakan algoritma LUC untuk melakukan proses enkripsi dan dekripsi file PDF dan hasil dari proses algoritma Goldbach Codes untuk kompresi dan dekompresi file dalam format .*txt.
Pengirim file PDF mengenkripsi file terlebih dahulu dengan menggunakan algoritma LUC, pembangkit kunci dilakukan secara acak sehingga diperoleh kunci enkripsi untuk mengenkripsi file. Proses dekripsi adalah pihak penerima yang memperoleh ciphertext yang memiliki kunci dekripsi untuk mengembalikan menjadi plainteks semula.
Penerima pesan memiliki ukuran file .*txt dengan kapasitas yang cukup besar, ukuran file dapat dikurangi dengan proses kompresi Goldbach Codes dengan Goldbach Codeword G0 dan dekompresi untuk membalikkan file ke ukuran semula.
3.2 Perancangan Sistem
Perancangan sistem merupakan spesifikasi dari solusi berbasis komputer secara detail, disebut juga dengan physical design. Perancangan sistem menekankan pada implementasi sistem secara teknis (Whitten & Bentley 2007).
Perancangan sistem yang akan dibangun memberikan gambaran alur kerja sistem. Perancangan sistem terdiri dari:
a. Flowchart atau diagram alir berguna untuk menggambarkan tahapan aktivitas
sebuah sistem atau sebuah use-case (Whitten & Bentley 2007).
b. Pseudocede adalah merupakan kode yang mirip dengan pemrograman
sebenarnya. Pseudocode berasal dari kata pseudo yang artinya mirip atau menyerupai dengan kode bahasa pemrograman. Dalam penulisan pseudocode
(20)
tidak ada aturan yang baku, biasanya ditulis berdasarkan basis bahasa pemrograman yang digunakan (Tammam, 2003).
c. Use case diagram merupakan diagram yang menggambarkan interaksi antara
sistem dengan pengguna dan eksternal sistem (Whitten & Bentley 2007).
d. Activity diagram merupakan diagram yang memodelkan langkah-langkah atau
aktivitas dari sebuah sistem. Perbedaan utama dari flowchart, activity diagram dapat menampilkan aktivitas sistem yang berjalan secara bersamaan (Whitten & Bentley 2007).
3.3 Pemodelan Sistem
Pemodelan aplikasi dilakukan dengan membuat use-case diagram dan activity
diagram. Bertujuan untuk menggambarkan semua bagian-bagian yang berperan dalam
sistem yang dirancang.
3.3.1 Use-case diagram
Use-case diagram akan mendeksripsikan reaksi sistem dan hubungan sistem dengan
lingkungannya dan memproduksi hasil yang dibutuhkan oleh si pengguna sistem.
Use-case diagram sistem terdapat pada gambar 3.2
(21)
3.3.2 Actvity diagram
Activity diagram menggambarkan workflow atau aktivitas dari sebuah sistem.
Aktivitas dari sebuah sistem dalam activity diagram meliputi proses pembangkitan kunci, enkripsi, dekripsi, kompresi dan dekompresi.
3.3.2.1 Activity diagram pembangkit kunci
Acitivity diagram pembangkit kunci akan menjabarkan bagaimana user (pengguna)
melakukan proses pembangkit kunci dan menggambarkan melalui diagram bagaimana system bekerja. Gambar 3.3 adalah activity diagram pembangkit kunci untuk enkripsi dan dekripsi file PDF.
(22)
Berdasarkan gambar 3.3, proses pembangkit kunci dengan memilih terlebih dahulu
file PDF yang akan di enkripsi, lalu sistem secara otomatis akan melakukan proses
random untuk memilih nilai N, kunci enkripsi (e) dan dekripsi (d) mana yang akan digunakan berdasarkan hasil perhitungan algoritma yang digunakan.
3.3.2.2 Activity diagram proses enkripsi LUC
Proses enkripsi pada activity diagram ditunjukkan pada gambar 3.4 akan diperlihatkan bagaimana user sebagai pengguna melakukan proses enkripsi dan system mengelola hasil enkripsi yang diperintahkan oleh user.
Gambar 3.4 Activity diagram Proses Enkripsi LUC
Pada tampilan gambar 3.4, proses enkripsi yang dilakukan adalah user menginputkan
file PDF (*pdf), browse file PDF dari media penyimpanan. Lalu system akan
menampilkan isi file PDF yang dipilih oleh user. Setelah itu, system akan generate kunci yang akan digunakan untuk enkripsi. Dengan proses enkripsi, maka
(23)
menghasilkan cipherteks yang ditampilkan oleh system. Maka user dapat menyimpan hasil cipherteks dengan format (*txt) ke media penyimpanan yang diinginkan.
3.3.2.3 Activity diagram proses kompresi goldbach codes
Activity diagram proses kompresi Goldbach Codes pada gambar 3.5 menggambarkan
kerja user dan system saat melalukan kompresi file.
Gambar 3.5 Activity diagram Proses Kompresi Goldbach Codes
Pada gambar 3.5, user menginputkan file cipherteks yang diambil dari media penyimpanan, lalu system melakukan proses kompresi dimana hasil kompresi secara otomatis akan disimpan di file direktori \E. Setelah itu, system menampilkan hasil dari proses kompresi.
(24)
3.3.2.4 Activity diagram dekompresi Goldbach Codes
Activity diagram dekompresi Goldbach Codes pada gambar 3.6 akan menunjukkan user dan system bekerja dalam melakukan proses dekompresi Goldbach Codes.
Gambar 3.6 Activity diagram Dekompresi Goldbach Codes
Berdasarkan gambar 3.6, user melakukan browse file kompresi dengan format (*txt), lalu system secara otomatis melakukam proses dekompresi dan langsung menyimpan hasil dekompresi pada direktori penyimpanan \E. Selanjutnya, system menampilkan hasil dekompresi.
3.3.2.5 Acitivity diagram dekripsi LUC
Activity diagram dekompresi Goldbach Codes pada gambar 3.7 akan menunjukkan
(25)
Gambar 3.7 Activity diagram Dekripsi LUC
Pada gambar 3.7, user melakukan browse cipherteks lalu system menampilkan isi cipherteks yang dipilih oleh user. Selanjutnya, user melakukan dekripsi file dan
system akan melakukan mengambil kunci privat dekripsi yang telah tersimpan lalu
menampilkan hasil dekripsi. Setelah itu, user dapat menyimpan hasil file.
3.3.2.6 Sequence Diagram
Sequence diagram adalah diagram yang menampilkan interaksi antar objek yang
disusun berdasarkan urutan atau rangkaian waktu. Sequence diagram juga menggambarkan bagaimana pesan dikirim dan diterima.
(26)
Gambar 3.8 Sequence Diagram Sistem
3.4 Perancangan Sistem
3.4.1 Pembuatan algoritma program
Pembuatan algoritma program adalah sebuah proses langkah-langkah algoritma LUC dan Goldbach Codes kedalam bahasa pemrograman. Tahap-tahapnya adalah sebagai berikut:
1. Pembuatan alur sistem secara umum
2. Pembuatan alur proses enkripsi dan dekripsi dengan menggunakan algoritma LUC dan penerapan algoritma LUC ke dalam bahasa pemrograman Visual Basic.
(27)
3. Pembuatan alur proses kompresi dan dekompresi dengan menggunakan algoritma Goldbach Codes dan penerapan algoritma Goldbach Codes kedalam bahasa pemrograman Visual Basic 2012.
4. Pembuatan proses pengujian bilangan prima dengan menggunakan Fermat dan menerapkannya kedalam bahasa pemrograman Visual Basic 2012.
3.4.2 Alur proses sistem secara umum
Alur proses sistem secara umum terbagi menjadi dua yaitu pada saat melakukan proses enkripsi file PDF (*pdf) menjadi cipherteks dan proses dekripsi file ciphertext menjadi file dengan format *txt lalu proses kompresi dan dekompresi secara keseluruhan.
(28)
Proses tersebut dapat dilihat pada gambar 3.9 flowchart sistem secara umum.
(29)
3.4.3 Alur proses pembangkit kunci
Alur proses pembangkit kunci algoritma LUC dijelaskan sebagai berikut:
1. Nilai p ≠ q untuk mencari nilai N. Nilai p = 103, q = 109, maka hasil N = 11227
2. Setelah mendapat nilai N, lalu dicari T = (p-1).(q-1).(p+1).(q+1). Proses perhitungan T = (102).(108).(104).(110), maka didapat hasil 126023040. Nilai e diambil dari relatif prima T, dimana GCD (e,T)=1. Maka GCD (10037, 126023040) =1 Setelah mendapat nilai e untuk kunci enkripsi, maka dicari SN = LCM (p-1)(q-1)(p+1)(q+1).Hasil dari perhitungan rumus SN = 2625480
3. Nilai SN yang didapat digunakan dalam rumus e.d Mod SN = 1.
10037. d Mod 11227 memperoleh hasil kunci d = 2591213. Adapun pseudoce pembangkit kunci adalah sebagai berikut:
Pseudocode Untuk Fungsi gcd
Private Shared Function must_gdc_with(p As BigInteger, n As BigInteger) As UInt16
Dim c_e As UInt16 Do
rng.GetBytes(rnd)
c_e = BitConverter.ToUInt16(rnd, 2)
Loop While GCD(c_e, p) <> 1 OrElse c_e >= p OrElse c_e >= n Return c_e
End Function
Pseudocode Untuk Pembangkit Bilangan Prima
Private Shared Function generate_bil_prima() As UInt16 Dim c_prima As UInt16
Do
rng.GetBytes(rnd)
(30)
Loop While c_prima < 85 OrElse Not Lehmann(c_prima) Return c_prima
End Function
Private Shared Function GCD(a As BigInteger, b As BigInteger) As BigInteger If a Mod b = 0 Then
Return b End If
Return GCD(b, a Mod b) End Function
Pseudocode Untuk Mencari Nilai tN
Private Shared Function generate_tN(p As BigInteger, q As BigInteger) As BigInteger
Return (p + 1) * (p - 1) * (q + 1) * (q - 1) End Function
Pseudocode Untuk Metode Lehman & Fermat
Private Shared Function Lehmann(p As BigInteger) As Boolean Dim tester As BigInteger, i As BigInteger = 0
'System.Diagnostics.Debug.WriteLine(p, "p"); Do
rng.GetBytes(rnd)
tester = (BitConverter.ToUInt16(rnd, 2) Mod p)
tester = BigInteger.ModPow(tester, (p - 1) / 2, p) (Fermat)
'System.Diagnostics.Debug.WriteLine(tester, "tester"); If tester <> 1 AndAlso tester - p <> -1 Then
Return False End If
'System.Diagnostics.Debug.WriteLine(i, "i"); i += 1
Loop While i < 5 Return True End Function
Pseudocode Untuk Mencari LCM
Private Shared Function lcm(ParamArray empat As BigInteger()) As BigInteger Dim hasil As BigInteger = 1
For Each bil As BigInteger In empat hasil = lcm(hasil, bil)
(31)
Next
Return hasil End Function
Private Shared Function lcm(a As BigInteger, b As BigInteger) As BigInteger Return CType((a * b) / GCD(a, b), BigInteger)
End Function
Pseudocode Untuk Invers Modulo
Public Shared Function InverseModular(a As BigInteger, b As BigInteger) As BigInteger
Dim x1 As BigInteger, y1 As BigInteger, x2 As BigInteger, y2 As BigInteger, q As BigInteger, temp As BigInteger, _
modulo As BigInteger = b If a < b Then
x1 = InlineAssignHelper(y2, 1) x2 = InlineAssignHelper(y1, 0) Else
x1 = InlineAssignHelper(y2, 0) x2 = InlineAssignHelper(y1, 1) End If
While b <> 0 q = a / b temp = b
b = a - (q * b) a = temp
temp = x2
x2 = x1 - (q * x2) x1 = temp
temp = y2
y2 = y1 - (q * y2) y1 = temp
End While
Return InlineAssignHelper(x1, If(x1 > 0, x1, modulo + x1)) End Function
(32)
Alur proses pembangkit kunci dapat dijelaskan pada flowchart gambar 3.10
Gambar 3.10 Flowchart Alur Pembangkit Kunci
3.4.5 Alur proses enkripsi LUC
Berikut ini adalah langkah-langkah dalam melakukan enkripsi pesan dengan menggunakan algoritma LUC:
1. Ubah plainteks kedalam ASCII. Lalu pecah plainteks kedalam blok be-record, masing-masing blok terdiri dari dua karakter.
SABRINA :
SA BR IN Asp
(33)
2. Setelah plainteks diubah kedalam ASCII, maka hitung enkripsi dengan algoritma LUC :
V [ 2…10037 ] = ( m. V [ i – 1] – V [ i – 2] ) mod 11227 V [ 0 ] = 2
Maka didapat hasil enkripsi 2182-5036-8882-8860-
Adapun pseudocode untuk proses enkripsi LUC sebagai berikut:
Private Shared Function barisan_LUC(P As BigInteger, Q As BigInteger, e As BigInteger, N As BigInteger) As BigInteger
Dim Vold As BigInteger = 2 Dim Vnew As BigInteger = P
Dim temp As BigInteger, i As BigInteger = 2 While i <= e
temp = Vnew
Vnew = ((P * Vnew) - Vold) Mod N Vold = temp
i += 1 End While
'System.Diagnostics.Debug.WriteLine(Vnew)
Return InlineAssignHelper(Vnew, If(Vnew > 0, Vnew, N + Vnew)) End Function
(34)
Alur proses enkripsi LUC dijelaskan pada flowchart berikut ini:
Gambar 3.11 Flowchart Enkripsi LUC
3.4.6 Alur Proses Kerja Dekripsi LUC
Adapun langkah-langkah dalam proses dekripsi file dengan menggunakan LUC sebagai berikut:
1. Hasil cipherteks Hasil cipherteks SABRINA adalah : 2182-5036-8882-8860- di dekripsi dengan menggunakan rumus:
V [1] = C
V [ 2…d ] = ( C. V [ i – 1] – V [ i – 2] ) mod n
(35)
2. Maka Hasilnya kembali ke plainteks semula yaitu SABRINA. Berikut ini merupakan alur flowchart proses dekripsi LUC
Gambar 3.12 Flowchart Dekripsi LUC
3.4.7 Alur Proses Kompresi Goldbach Codes
Proses kompresi goldbach codes menggunakan tabel Goldbach G0 Code yang sudah ditetapkan. Contoh terdapat file teks dengan string SABRINA. Maka proses sebelum dilakukannya kompresi adalah memasukkan string SABRINA kedalam ASCII Code seperti tabel 3.1 dibawah ini:
(36)
Tabel 3.1 ASCII Codes Proses Kompresi
Char ASCII Codes ASCII Code (bin) Bit Freq Bit x Freq
A 65 01000001 8 2 16
S 83 01010011 8 1 8
B 66 01000010 8 1 8
R 82 01010010 8 1 8
I 73 01001001 8 1 8
N 78 01001001 8 1 8
Sp 32 00100000 8 1 8
Jumlah = 64 Setelah itu, dilakukan proses kompresi dengan Goldbach Codes menggunakan Goldbach G0 Code pada tabel 3.2
Tabel 3.2 Goldbach G0 Codes untuk Proses Kompresi
Char Freq N 2 (n + 3) Prima Goldbach GO Codes
Bit Bit x Freq
A 2 1 8 3+5 11 2 4
S 1 2 10 7+3 101 3 3
B 1 3 12 5 + 7 011 3 3
R 1 4 14 3 + 11 1001 4 4
I 1 5 16 5 + 11 0101 4 4
N 1 6 18 7 + 11 0011 4 4
Sp 1 7 20 7 + 13 00101 5 5
(37)
Maka hasil kompresinya adalah : 11101011100101010011001010000000
Hasil kompresi adalah 1110101110010101001100101, agar hasil kompresi dapat dibaca oleh komputer, maka dilakukan penambahan padding:
11101011100101010011001010000000
Penambahan padding dilakukan agar jumlah bit dapat dibagi menjadi 8 per bit. Agar dapat dibaca oleh komputer, maka dilakukan flagging dengan menambah biner sesuai dengan penambahan padding yang dipakai. Dalam kasus diatas, padding yang digunakan sebanyak 7, maka biner 7 adalah 0111. Maka hasil kompresi setelah dilakukan padding dan flagging adalah 111010111001010100110010100000000111 Adapun pseudocode untuk kompresi Goldbach Codes sebagai berikut:
Private Shared Function e_goldbach(i As Integer) As String Dim sb As New StringBuilder()
Dim bil As Integer = 0, bil2 As Integer = 0 Dim bil_akhir As Integer = Bil_Prima.Last() For j As Integer = bil_akhir + 1 To i If lehmann(j) Then
Bil_Prima.Add(j) End If
Next
For j As Integer = Bil_Prima.Count - 1 To 0 Step -1 bil = Bil_Prima(j)
bil2 = i - bil
If Bil_Prima.IndexOf(bil2) = -1 Then Continue For
End If
If bil <= bil2 Then Dim k As Integer = 1 bil = Bil_Prima(j + k) bil2 = i - bil
While Not Bil_Prima.Contains(bil2) bil = Bil_Prima(j + k)
bil2 = i - bil k += 1
(38)
Exit For
End If Next
sb.Append(1)
For j As Integer = Bil_Prima.IndexOf(bil) - 1 To 0 Step -1 If Bil_Prima(j) <> bil2 Then
sb.Insert(0, "0"c) Else
sb.Insert(0, "1"c) End If
Next
Return sb.ToString() End Function
Alur flowchart untuk kompresi Goldbach Codes ditunjukkan pada gambar 3.13
(39)
Proses dekompresi pada Goldbach Codes adalah sistem membaca hasil kompresi lalu membalikkan file ke keadaan semua
S A B R I N A
101 11 011 1001 0101 0011 101
Adapun pseudocode untuk dekompresi Goldbach Codes adalah sebagai berikut:
Public Shared Function dekompresi(s_values As Byte()) As Byte()
Dim hasil As New List(Of Byte)() Dim i As Integer = 0
Dim sb As New StringBuilder() For i = 0 To s_values.Length - 2
sb.Append(Convert.ToString(s_values(i), 2).PadLeft(8, "0"c)) Next
If flag = 1 Then
sb.Append(Convert.ToString(s_values(i), 2).Remove(0, 1)) Else
sb.Append(Convert.ToString(s_values(i), 2).PadLeft(8, "0"c)) End If
decoding(hasil, sb) Return hasil.ToArray()
End Function
Private Shared Sub decoding(hasil As List(Of Byte), sb As StringBuilder)
Dim bin As New StringBuilder()
Dim n As Integer = 0, i As Integer = 0 While i < sb.Length
If sb(i) = "1"c Then n += 1
End If
bin.Append(sb(i)) If n = 2 Then
hasil.Add(eg_encoding.FirstOrDefault(Function(x) x.Value = bin.ToString()).Key)
bin.Clear() n = 0 End If i += 1 End While End Sub
3.5 Perancangan Interface
Perancangan interface merupakan interaksi pengguna ketika menggunakan sistem. Perancangan intercafe bertujuan untuk memudahkan pengguna untuk menggunakan aplikasi yang telah dirancang.
(40)
3.5.1 Rancangan interface halaman htama
Halaman utama pada aplikasi pengamanan terdiri dari judul skripsi yang diimplementasikan ke dalam aplikasi pengamanan dan kompresi data, nama penulis, logo usu, nama fakultas dan tombol next untuk melanjutkan ke halaman berikutnya. Tampilan halaman utama terdapat pada gambar 3.12
Gambar 3.14 Perancangan Halaman Utama
Keterangan:
1. Label1 menampilkan judul skripsi
2. Label2 menampilkan nama penulis serta nim penulis 3. Label3 menampilkan logo fakultas
4. Label4 menampilkan nama fakultas serta nama universitas dan tahun pembuatan skripsi
5. Button5 untuk tombol next, melanjutkan ke halaman selanjutnya
(41)
Pada halaman rancangan aplikasi dan pengamanan file terdapat empat menu utama, yaitu enkripsi, kompresi, dekompresi dan dekripsi. Gambar 3.13 adalah user interface yang telah dirancang untuk memudahkan user dalam memilih menu yang akan dipilih.
Gambar 3.15 Rancangan Aplikasi Pengamanan dan Kompresi
Keterangan:
1. Button1 : menu enkripsi yang akan menampilkan halaman enkripsi
2. Button2 : menu kompresi yang akan menampilkan tampilan halaman kompresi 3. Button3 : menu dekompresi yang akan menampilkan tampilan halaman
dekompresi
4. Button4 : menu dekripsi yang akan menampilkan tampilan halaman dekripsi 5. Button5 : untuk keluar dari halaman
3.5.3 Rancangan interface halaman enkripsi
Rancangan halaman enkripsi terdiri dari browse, menampilkan hasil enkripsi, menyimpan hasil enkripsi dan terdapat juga halaman pembangkit kunci LUC. Form enkripsi terdiri dari button, text box, dan label.
(42)
Gambar 3.16 Rancangan Halaman enkripsi
Keterangan:
1. Text Box1 untuk menampilkan string nama media penyimpanan file 2. Button2 untuk mencari dimana file PDF yang akan di enkrpsi tersimpan 3. Text Box3 untuk menampilkan isi dari file PDF
4. Button3 untuk melakukan proses enkripsi
5. Label5 merupakan keterangan nama hasil enkripsi 6. TextBox6 untuk menampilkan hasil cipherteks 7. Button7 untuk melakukan proses penyimpanan 8. Form8 menampilkan pembangkit kunci LUC 9. Label 9 merupakan keterangan nila p
10.Label 10 merupakan keterangan nilai q 11.Label 11 merupakan keterangan nilai N 12.Label 12 merupakan keterangan nilai T 13.Label 13 merupakan keterangan nilai e 14.Label 14 merupakan keterangan nilai RN 15.Label 15 merupakan keterangan nilai d 16.TextBox16 untuk menampilkan nilai p
(43)
17.TextBox17 untuk menampilkan nilai q 18.TextBox18 untuk menampilkan nilai N 19.TextBox19 untuk menampilkan nilai T 20.TextBox20 untuk menampilkan nilai e 21.TextBox21 untuk menampilkan nilai RN 22.TextBox22 untuk menampilkan nilai d 23.Form23 merupakan form tampilan enkripsi
24.TextBox 24 untuk menampilkan waktu proses enkripsi berjalan.
3.5.4 Rancangan interface halaman kompresi
Rancangan halaman kompresi terdapat form kompresi yang diisi dengan text box, button, dan label untuk melengkapi proses kompresi.
Gambar 3.17 Rancangan Halaman Kompresi
Keterangan:
1. Form1 merupakan tampilan form kompresi
2. TextBox2 untuk menampilkan alamat tempat penyimpanan
3. Button3 untuk proses melakukan kompresi dan penyimpanan kompresi 4. TextBox4 untuk menampilkan hasil proses kompresi
(44)
3.5.6 Rancangan halaman dekompresi
Rancangan halaman dekompresi terdapat button, textboxt, dan form. Berikut ini merupakan tampilan halaman dekompresi yang telah dirancang
Gambar 3.18 Rancangan Halaman Dekompresi
Keterangan:
1. Form1 merupakann tampilan form halaman dekompresi 2. TextBox2 untuk menampilkan alamat dimana file tersimpan
3. Button3 untuk melakukan proses dekompresi dan melakukan penyimpanan 4. TextBox4 untuk menampilkan hasil dekompresi
(45)
3.5.7 Rancangan halaman dekripsi
Rancangan halaman dekripsi terdiri dari label, form, button dan textbox. Berikut ini adalah tampilan halaman dekripsi pada gambar 3.19
Gambar 3.19 Halaman Rancangan Dekripsi
Keterangan:
1. Form1 merupakan halam form dekripsi
2. TextBox2 untuk menampilkan alamat dimana file disimpan 3. Button3 untuk melakukan proses pencarian
4. TextBox4 untuk menampilkan isi file 5. Button5 untuk proses dekripsi
6. Label6 untuk keterangan judul hasil dekripsi 7. TextBox7 untuk menampilkan hasil dekripsi 8. Button8 untuk melakukan proses menyimpan file
9. Label9 menampilkan judul pembangkit kunci dekripsi LUC 10.Label10 menampilkan N
(46)
11.Label11 menampilkan d
12.TextBox12 menampilkan hasil N 13.TextBox13 menampilkan nilai d
(47)
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
Pembahasan Bab 4 akan memaparkan bagaimana implementasi dari sistem yang telah dibangun, juga pengujian hasil implementasi pengamanan data file PDF dengan menggunakan algoritma LUC dan hasil implementasi kompresi data file dengan menggunakan algoritma Goldbach Codes menggunakan Visual Studio 2012.
4.1 Implementasi Sistem
Implementasi sistem merupakan representatif hasil desaign kedalam bahasa pemrograman. Implementasi dalam sistem yang dibangun menggunakan bahasa pemrograman visual basic dan menggunakan software Visual Studio 2012.
Proses implementasi yang dirancang, terdapat enam halaman form yang terdiri dari form halaman utama, form halaman aplikasi dan pengamanan, form enkripsi, form kompresi, form dekompresi dan form dekripsi.
4.1.1 Form halaman utama
Form halaman utama adalah form awal yang pertama kali muncul ketika aplikasi
digunakan. Form halaman utama terdiri dari judul skripsi, nama, nim penulis, logo fakultas, nama fakultas dan program studi, tahun pembuatan skripsi dan tombol button
(48)
Gambar 4.1 Halaman Utama
4.1.2 Form halaman aplikasi pengaman dan kompresi file
Form halaman kedua adalah form yang memperlihatkan empat menu utama dari
aplikasi yang telah dibangun. Menu-menu tersebut adalah enkripsi, kompresi, dekompresi dan dekripsi. Pada gambar 4.2 merupakan tampilan dari aplikasi pengamanan dan kompresi file PDF
(49)
4.1.3 Form Halaman Enkripsi
Form halaman enkripsi terdiri dari pencarian file PDF, proses pembangkit kunci LUC,
proses enkripsi, hasil enkripsi berupa cipherteks dan penyimpanan cipherteks. Dapat dilihat pada tampilan sebelah kanan, merupakan tampilan pembangkit kunci LUC, dapat dilihat pada label e merupakan kunci enkripsi ,dimana e merupakan kunci yang digunakan untuk pengamanan file. Gambar 4.3 akan memperlihatkan tampilan form enkripsi.
Gambar 4.3 Form Halaman Enkripsi
4.1.4 Form halaman kompresi
Form halaman kompresi adalah tampilan proses kompresi yang terdiri dari pencarian
file yang akan dilakukan kompresi, menampilkan hasil kompresi dan penyimpanan
kompresi. Pada gambar 4.4 adalah tampilan halam kompresi.
(50)
4.1.5 Form Halaman Dekompresi
Form halaman dekompresi adalah tampilan proses dekompresi yang terdiri dari
pencarian file yang akan dilakukan proses dekompresi, menampilkan hasil dekompresi dan penyimpanan file dekompresi. Tampilan form halaman dekompresi terdapat pada gambar 4.5
Gambar 4.5 Form Halaman Dekompresi
4.1.6 Form Halaman Dekripsi
Form halaman dekripsi adalah form yang telah dirancangan untuk dilakukannya
proses dekripsi. Pada tampilan form dekripsi, terdapat pembangkit kunci dekripsi LUC, pencarian file yang akan dilakukan proses dekripsi, tampilan file dekripsi, tampilan plainteks yang telah di dekripsi dan penyimpanan file dekripsi. Tampilan halaman dekripsi terdapat pada gambar 4.6
(51)
4.2 Pengujian Sistem
Pengujian sistem merupakan tahap pengujian pada sistem apakah sistem dapat berjalan dengan baik dan memberikan hasil yang akurat ketika digunakan. Pengujian sistem bertujuan apakah aplikasi yang dibangun sudah layak untuk digunakan atau masih mempunyai kriteria yang harus diperbaiki.
4.2.1 Pengujian pembangkit kunci dan enkripsi file
Pembangkit kunci akan dimunculkan saat dilakukannya proses enkripsi file PDF. Bilangan prima p dan q merupakan kunci utama untuk mendapatkan public key dan
private key. Setelah dilakukannya proses pembangkit kunci, maka file PDF dapat
dienkripsi dan hasil enkripsi ditampilkan pada form tampilan hasil enkripsi.
1. Pilih file PDF di tempat penyimpanan yang akan dilakukan proses enkripsi, seperti yang terdapat pada gambar 4.7
(52)
2. Setelah muncul isi file pdf, pilih button enkripsi untuk dilakukannya proses enkripsi. Secara otomatis, pembangkit kunci LUC akan muncul. Pembangkit kunci LUC dilakukan secara acak oleh sistem. Proses enkripsi dan pembangkit kunci LUC dapat dilihat pada gambar 4.8
Gambar 4.8. Hasil Enkripsi dan Pembangkit Kunci
3. Penyimpanan hasil enkripsi dalam format .*txt. Selanjutnya akan muncul pemberitahuan apakah file tersebut sudah tersimpan atau tidak seperti pada gambar 4.9
Gambar 4.9. Notifikasi File Tersimpan
4.2.2Pengujian kompresi
Pengujian kompresi pada aplikasi yang telah dibangun terdapat pada form kompresi, langkah-langkah pengujian kompresi sebagai berikut:
1. Pilih tombol browse untuk dilakukannya pencarian file yang akan dilakukan kompresi. Pada gambar 4.10 adalah tampilan pencarian file kompresi.
(53)
Gambar 4.10. Pencarian File yang Akan di Kompresi
Hasil pencarian merupakan file dengan format (.*txt) yang akan dilakukan proses kompresi. File tersebut merupakan cipherteks yang sebelumnya telah dilakukan proses enkripsi. Pada gambar 4.11 akan ditunjukkan hasil proses kompresi.
(54)
4.2.3. Pengujian Dekompresi
Pengujian dekompresi dilakukan setelah hasil kompresi diperoleh. Tahapan yang dilakukan adalah sebagai berikut:
1. Pilih file kompresi dalam format .(*txt). Pilih tombol browse untuk mencari dimana file tersebut disimpan. Seperti pada gambar 4.12 adalah gambar pencarian file kompresi yang akan dilakukan proses dekompresi.
Gambar 4.12 Pencarian File yang Akan di Dekompresi
Setelah file dipilih, lalu tekan tombol dekompresi untuk melakukan proses dekompresi. Seperti pada gambar 4.13 adalah gambar hasil proses dekompresi
(55)
4.2.4 Pengujian dekripsi
Pengujian dekripsi adalah tahap akhir dari pengujian sistem. Pada tahap ini diharapkan hasil yang telah melalui proses enkripsi, kompresi, dekompresi akan kembali ke plainteks awal. Berikut ini adalah tahapan pengujian dekripsi:
1. Pilih browse pada form dekripsi untuk mencari file (*txt) yang akan didekripsi. Gambar 4.14 adalah gambaran pencarian file dekripsi
Gambar 4.14 Proses Pencarian File yang Akan Dekripsi
Tampilan selanjutnya adalah menampilkan hasil dekompresi yang akan dilakukan proses dekripsi seperti pada gambar 4.15. Proses dekripsi selesai dan kembali menjadi plainteks. Hasil dekripsi disimpan ke dalam bentuk file PDF.
(56)
4.2.5 Pengujian hasil
Hasil pengujian merupakan uji hasil dari enkripsi, kompresi,dekompresi dan dekripsi. Pengujian hasil juga meliputi pengujian terhadap berapa lama waktu proses enkripsi dan dekripsi dengan panjang nilai kunci yang berbeda.
Terdapat juga uji string homogen dan heterogen pada pengujian hasil yang akan dilakukan. Uji hasil dilakukan dengan ukuran yang berbeda-beda. Adapun uji hasil yang telah dilakukan sebagai berikut:
a. Uji Coba Ke-1
Uji coba pertama adalah file PDF dengan ukuran 80 kb. Karakter dalam file PDF ini adalah sebanyak 18 karakter. Berikut ini uji merupakan uji hasil enkripsi pada gambar 4.16
Gambar 4.16 Uji Hasil Enkripsi pertama
b. Uji Hasil Ke-2
Uji hasil kedua, merupakan file PDF dengan ukuran 100 kb dengan jumlah karakter 74320 karakter.
(57)
Pada gambar 4.17 terdapat hasil uji enkripsi kedua dengan size yang berbeda.
Gambar 4.17 Uji Hasil Enkripsi Pada Uji Coba Kedua
c. Uji Hasil Ke-3
Uji hasil kedua, merupakan file PDF dengan ukuran 120 kb dengan jumlah karakter 127251 karakter. Terdapat hasil gambar yang menunjukkan proses enkripsi pada gambar 4.18
(58)
d. Uji Hasil Ke-4
Uji hasil ke-empat merupakan file PDF dengan size 140 kb dengan jumlah karakter 2804 karakter. Pada gambar 4.19 terdapat hasil dari proses enkripsi
file
Gambar 4.19. Uji Hasil Enkripsi Pada Uji Coba Keempat
e. Uji Hasil Ke-5
Uji hasil kelima merupakan file PDF dengan size 160 kb dengan jumlah karakter 708 karakter. Pada gambar 4.20 terdapat hasil dari proses enkripsi file.
(59)
Dari uji coba yang telah dilakukan diatas, maka diperoleh hasil seperti pada tabel yang tertera dibawah ini:
Tabel 4.1 Hasil Uji Coba Lima Kali Percobaan No Ukuran
File Asli (kb)
Ukuran dalam kb Cr
%
Rc Rd
%
SS Enkripsi Kompresi Dekompresi Dekripsi
1 80 1 1 1 4 1 1 99% 0
2 100 184 505 550 79 2,74% 0,36 97,26% -1,74
3 120 338 831 338 132 2,45% 0,40 97,55% -1,45
4 140 322 855 322 7 2,65% 0,37 97,35% -1,65
5 160 2 6 2 5 3% 0,33 97% -2
Rata-Rata 2,36% 0,49 97,63% -1,37
Ukuran file yang diuji memiliki tingkatan ukuran yang berbeda, yaitu mulai dari ukuran file yang terendah 80 kilobytes, 100 kilobytes, 120 kilobytes, 140 kilobytes dan 160 kilobytes. Nilai rata-rata dalam proses enkripsi dan kompresi menjadi parameter untuk Compression of Ratio (Cr), persentasi besar data sebesar 2,36% .
4.2.5.1 Hasil pengujian waktu enkripsi dan dekripsi
Hasil uji waktu enkripsi dan dekripsi dilakukan dengan kunci enkripsi dan dekripsi yang berbeda. Tujuannya adalah untuk mengetahui seberapa lama proses enkripsi dan dekripsi dengan nilai kunci yang berbeda. Pada tabel 4.2 merupakan hasil pengujian waktu dengan nilai kunci enkripsi dan dekripsi yang berbeda pada ukuran file yang berbeda.
(60)
0 500000 1000000 1500000 2000000 2500000 3000000 3500000 4000000
80kb 100kb 120kb 140kb 160kb
kunci e
waktu e
kunci d
waktu d Tabel 4.2. Hasil Uji Waktu Enkripsi dan Dekripsi
Ukuran File (kilobytes) Kunci Enkripsi (e) Waktu enkripsi (milisecond) Kunci Dekripsi (d) Waktu (milisecond)
80 10033 94 ms 2487937 17346ms
100 25621 835831ms 110281 3349816ms
120 55483 3132264ms 30451 1945155ms
140 63851 90888ms 43451 55115ms
160 65339 19912ms 723059 233306ms
Rata-Rata: 815.797,8ms Rata-Rata: 1.120.147,6ms
Pada tabel 4.2, terdapat hasil uji enkripsi dengan kunci yang berbeda pada setiap filenya. Semakin tinggi nilai kunci yang dihasilkan, maka semakin lama pula proses enkripsi. Begitu juga dengan dekripsi, besarnya hasil kunci dekripsi mempengaruhi
waktu hasil dekripsi. Hasil rata-rata untuk waktu enkripsi yaitu 815.797,8 milisecond dan dekripsi dengan waktu 1.120.147,6 milisecond. Pada gambar 4.21. menunjukkan
grafik perbandingan waktu enkripsi dan dekripsi.
(61)
Perbandingan waktu diperlihatkan pada grafik yang tertera pada gambar 4.21, Grafik paling tinggi adalah ukuran file 100 kilobytes, hal ini disebabkan jumlah halaman pada
file dan kunci enkripsi dan dekripsi yang digunakan.
4.2.5.2 Hasil pengujian string homogen dan heterogen
Hasil pengujian string homogen dan heterogen dari proses kompresi dan dekompresi dengan jenis string yang berbeda. String yang terdiri dari karakter yang sama disebut homogen, sedangkan string yang terdiri dari karakter yang berbeda disebut heterogen. Hasil pengujian string homogen dan heterogen pada tabel 4.3 dan 4.4
Tabel 4.3 Pengujian String Homogen
Terdapat dua file homogen dengan ukuran yang berbeda, file pertama dengan ukuran 80 kilobytes. Setelah dilakukan kompresi, ukuran file berubah menjadi 1
kilobytes.
File kedua dengan ukuran file awal 100 kilobytes, lalu dilakukan proses kompresi sehingga ukuran file berubah menjadi 505 kilobytes. Berikut ini merupakan tabel hasil pengujian string heterogen.
String Homogen
No Jumlah Karakter Ukuran File (kilobyte) Ukuran Sebelum di kompresi (kilobyte) Ukuran Setelah di kompresi (kilobyte) Cr %
Rc Rd Ss
1 18 80 80 1 0,0125 80 99,98 0,98
2 74320 100 100 593 5,93 0,168 94,07 -4,93
(62)
Tabel 4.3 Pengujian String Heterogen String Heterogen
No Ukuran File (kb)
Ukuran Sebelum dikompresi
(kilobytes)
Ukuran Setelah di kompresi
(kilobytes)
Cr % Rc Rd Ss
1 120 120 831 6,925% 0,14 93,07 -5,925
2 140 140 855 6,107% 0,16 93,89 -5,107
3 160 160 6 0,0375% 26,6 99,96 0,96
Rata-Rata 4,35% 8,96 95,64 -3,357
Pada tabel diatas, file yang diuji untuk string heterogen sebanyak tiga file dengan ukuran yang berbeda, yaitu 80 kilobytes, 100 kilobytes, 120 kilobytes, 140 kilobytes dan 160 kilobytes. Hasil rata-rata space saving bernilai negatif karena proses kompresi tidak berjalan dengan baik, size semakin bertambah besar saat dilakukannya kompresi.
4.2.5.3. Hasil uji sample data file enkripsi
Pada penelitian ini, penulis mengadakan hasil uji file enkripsi dengan menguji sample data enkripsi dengan mengirimkan ke 100 email, dengan mengajukan beberapa pertanyaan seperti berikut:
1. Pada saat Anda membaca file yang saya kirim, apakah Anda mengetahui isi file tersebut? Berikan tanggapan Anda.
2. Setelah membaca isi file tersebut, apakah Anda dapat membongkar isi asli dari pesan tersebut? Jika ya, jelaskan bagaimana cara membongkar file tersebut. Dari 100 email yang saya kirim, responden yang menjawab pertanyaan tersebut sebanyak 50 email, 80% tidak mengetahui bahwa file tersebut merupakan hasil enkripsi dan 20% mengetahui file tersebut merupakan hasil enkripsi namun tidak mengetahui algoritma apa yang digunakan saat enkripsi file. Dari 50 email yang
(63)
menjawab pertanyaan yang diajukan, tidak satupun dapat membongkar isi file tersebut. (Jawaban responden terdapat di lampiran).
(64)
BAB 5
KESIMPULAN DAN SARAN
Pada Bab ini, akan disimpulkan hasil penelitian Penulis mengenai aplikasi yang telah dikerjakan. Pada Bab ini juga terdapat saran-saran yang bermanfaat untuk pengembangan aplikasi pengamanan dan kompresi file PDF.
5.1Kesimpulan
Selama proses pengerjaan skripsi, Penulis menarik kesimpulan bahwa:
1. Aplikasi yang dibangun dapat mengembalikan plainteks awal dengan dilakukannya pengujian sebanyak lima kali uji namun pada penelitian ini, untuk angka 6 yang ada pada file PDF tertentu, Algoritma LUC tidak dapat mengembalikan menjadi plainteks. Angka 6 berubah menjadi simbol titik atau simbol segitiga.
2. Ukuran file enkripsi > 80 kilobytes saat dilakukan kompresi tidak berjalan dengan optimal, ukuran file semakin bertambah lebih besar saat dikompresi. 3. Nilai kunci enkripsi menghasilkan waktu rata-rata sebesar 815.797,8
milisecond dan nilai kunci dekripsi menghasilkan waktu rata-rata sebesar
1.120.147,6 milisecond.
4. Hasil pengujian space saving mendapat rata-rata nilai negatif karena kompresi menghasilkan ukuran file yang lebih besar.
5. Hasil dekripsi yang berupa plainteks awal disimpan dalam format (.*pdf), namun susunan karakter dalam file tidak tersusun seperti semula. Seperti enter dan tab yang dihilangkan dalam file.
(65)
5.2Saran
Adapun saran yang dapat Penulis diberikan untuk menyempurnakan skripsi ini yaitu: 1. Sistem ini hanya mampu melakukan penyandian file (.*pdf), sehingga untuk
pengembangan selanjutnya dapat dilakukan dengan menggunakan file yang lain, seperti file jenis (.*doc), (.*rtf).
2. Algoritma Goldbach Codes tidak efektif untuk melakukan kompresi teks, untuk penelitian selanjutnya dapat memilih algoritma kompresi lain yang seperti Algoritma Huffman atau Algoritma Shannon-Fano.
3. Panjang kunci enkripsi dan dekripsi Algoritma LUC memakan waktu yang lama dengan menggunakan bahasa pemrograman visual basic, untuk penelitian selanjutnya dapat menggunakan bahasa pemrograman lain seperti
Java atau Phyton.
4. Algoritma LUC pada proses pengamanan data file PDF tidak bekerja secara efisien karena memakan waktu yang lama, penelitian selanjutnya dapat dikembangkan untuk pengamanan data (.*doc), (.*txt) atau (.*jpeg).
(66)
BAB 2
LANDASAN TEORI
Bab 2 membahas tinjauan teoritis yang berkaitan dengan algoritma kriptografi LUC dan algoritma kompresi Goldbach Codes.
2.1Kriptografi
Informasi dalam sebuah data memiliki nilai penting, dimana isi data dari informasi tersebut harus dijaga kerahasiaannya dari pihak yang ingin melakukan pembobolan data. Berkembangnya zaman menuju era teknologi yang sangat maju, kini kriptografi telah banyak digunakan untuk pengamanan data seperti gambar, pesan, audio, berkas
biner maupun dokumen.
2.1.1 Definisi kriptografi
Kata-kata “cryptography”, “cryptology” dan “cryptanalysis” umunya berubah-ubah dan masing-masing dari kata tersebut memiliki makna yang berbeda. Cryptography yang awal katanya menggunakan kata “crypt”, dalam bahasa Yunani kruptos yang artinya sembunyi. Kata terakhir “graphy” mengacu pada arti tulisan. Kriptografi memiliki arti sebagai tulisan yang tersembunyi. (Batten, 2013).
Secara umum, kriptografi mengacu pada bagian enkripsi untuk membangun sebuah sistem transmisi rahasia. Sistem transmisi rahasia tersebut merupakan proses enkripsi dalam kriptografi, dimana mengubah plainteks (informasi awal) menjadi cipherteks. Pada gambar 2.1 adalah proses kriptografi secara umum:
(67)
Gambar 2.1 Urutan Proses Kriptografi (Munir, 2006)
Proses kriptografi pada umumnya, mengubah plainteks menjadi cipherteks, yang mana hasil dari cipherteks berupa simbol-simbol atau notasi angka yang tidak dapat dibaca oleh orang awam. Umunya, proses enkripsi dan dekrisp memerlukan kunci untuk menghasilkan cipherteks dan plainteks yang diinginkan. Cipherteks dapat dikembalikan menjadi tulisan awal dengan dilakukannya proses dekripsi.
2.1.2 Sejarah kriptografi
Secara historis ada empat kelompok orang yang berkontribusi terhadap perkembangan kriptografi, dimana mereka menggunakan kriptografi untuk menjamin kerahasiaan dalam komunikasi pesan penting, yaitu kalangan militer (termasuk intelijen dan mata-mata), kalangan diplomatik, dan penulis buku harian. Diantara empat kelompok ini, kalangan militer yang memberikan kontribusi paling penting karena pengiriman pesan di dalam suasana perang membutuhkan teknik enkripsi dan dekripsi yang rumit.
Kriptografi mengalami perkembangan yang sangat pesat pada masa peperangan. Pada masa peperangan, terdapat tuntutan untuk menyampaikan informasi yang tidak boleh diketahui oleh musuh. Terdapat beberapa cara enkripsi pesan pada zaman perang, enkripsi yang paling sering digunakan adalah enkripsi manual yang dilakukan secara langsung oleh manusia. Namun ada beberapa negara yang melakukan enkripsi dengan menggunakan mesin. Contohnya negara Jerman dan Jepang. Penggunaan alat tersebut bertujuan untuk memudahkan proses enkripsi dan data menjadi lebih aman.
Kunci
Enkripsi Dekrispi
Cipherteks
Plainteks Kunci
(68)
Pada zaman Romawi kuno, Julius Caesar telah menggunakan teknik kriptografi yang dijuluki Caesar Cipher untuk mengirimkan pesan rahasia. Meskipun teknik yang digunakan masih belum memadai.
Pada pedang dunia ke-II, pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan mesin Enigma. Mesin Enigma menggunakan beberapa buah rotor (roda berputar) untuk melakukan enkripsi dengan cara yang sangat rumit. Awalnya, pihak sekutu kesulitan untuk memecahkan kode mesin kriptografi Jerman, namun seiring berjalannya waktu pihak sekutu mempelajari mesin Enigma dan berhasil memecahkan kode tersebut. Mesin Enigma dapat dilihat pada gambr 2.2
Gambar 2.2. Mesin Enkripsi Enigma yang digunakan oleh Tentara Jerman pada Masa Perang Dunia ke-II. (Munir, 2006)
Masa depan kriptografi akan dipengaruhi oleh perkembangan matematika terutama dalam hal algoritma. Perkembangan algoritma untuk proses kriptografi sering diggunakan dalam bidang teknologi. Banyak aplikasi kriptografi yang diimplementasikan untuk memenuhi pengamanan data sebuah instansi atau perangkat telekomunikasi.
(69)
2.1.3 Tujuan kriptografi
Kriptografi bertujuan untuk memberikan aspek keamanan sebuah pesan atau informasi yang akan dikirim. Berikut ini aspek-aspek keamanan dalam kriptografi (Forouzan, 2007):
1. Kerahasiaan Data (Data Confidentialy)
Kerahasiaan data dirancang untuk memproteksi data dari penyerangan yang ingin membuka data.
2. Integritas Data (Data Integrity)
Integritas data adalah sebuah rancangan untuk memproteksi data dari modifikasi, penyisipan, penghapusan, dan orang yang tidak memiliki hak untuk membalas sebuah pesan.
3. Otentikasi (Authentication)
Mengidentifikasi kebenaran sumber pesan baik dari si pengirim maupun si penerima. Dua pihak harus saling berkomunikasi untuk mengotentikasi satu sama lain sehingga ia dapat memastikan sumber pesan yang dikirim melalui saluran asalanya atau tidak.
4. Menolak Penyangkalan (Non-Repudiation)
Memberikan perlindungan dengan cara penolakan sebuah data baik dari si pengirim ataupun si penerima. Dalam non-repudiation akan membuktikan apakah data tersebut orisinil, penerima data dapat membuktikan identitas dari si pengirim jika disangkal. Non-repudiaton juga membuktikan dengan bukti pengiriman, apakah pesan yang dikirim diterima langsung oleh si penerima pesan.
5. Acces Control
Memberikan akses data yang tidak sah. Akses dalam istilah ini adalah sangat luas dan dapat melibatkan membaca, menulis, memodifikasi, program eksekusi dan sebagainya.
(70)
2.1.4 Terminologi dan konsep dasar kriptografi
Dalam ilmu kriptografi akan ditemukan beberapa istilah atau terminologi yang sangat penting untuk diketahui dalam memahami kriptografi. Oleh karena itu, penulis akan menjelaskan beberapa istilah penting dalam kriptografi yang akan sering digunakan dalam penulisan. Berikut beberapa istilah penting dalam kriptografi.
a) Plainteks dan Cipherteks
Dalam memahami bidang ilmu kriptografi, sering muncul kata plainteks. Plainteks diartikan sebagai pesan awal atau pesan asli dari si pengirim yang. Umunya, plainteks merupakan sebuah pesan yang belum mengalami perubahan sama sekali. Plainteks dapat berupa teks, dokumen, video ataupun audio.
Plainteks yang akan dikirim oleh si pengirim dapat diubah menjadi kode-kode, simbol ataupun angka yang tidak diketahui maknanya, istilah ini disebut sebagai cipherteks. Cipherteks adalah sebuah metode untuk merahasiakan tulisan tangan, dimana plainteks (pesan awal) diubah menjadi cipherteks.
Berikut ini merupakan perbandingan antara plainteks dan cipherteks pada gambar 2.3
(1)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataaan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar isi viii
Daftar table xi
Daftar gambar xii
BAB 1. PENDAHULUAN 1
1.1. Latar Belakang 1
1.2. Rumusan Masalah 2
1.3. Ruang Lingkup Penelitian 2
1.4. Tujuan Penelitian 3
1.5. Manfaat Penelitian 3
1.6. Penelitian Sebelumnya 3
1.7. Metodologi Penelitian 4
1.8. Sistematika Penulisan 5
BAB 2. LANDASAN TEORI 7
2.1. Kriptografi 7
2.1.1. Defenisi Kriptografi 7
2.1.2. Sejarah Kriptografi 8
2.1.3. Tujuan Kriptografi 10
2.1.4. Terminologi dan Konsep Dasar Kriptografi 11
2.1.5. Jenis Kriptografi 13
2.2. Algoritma LUC 16
2.2.1. Perkembangan Algoritma LUC 16
2.3. Landasan Matematika Algoritma LUC 17
2.3.1. Aritmatika Modulo 17
2.3.2. Least Common Multiple 17
2.3.3. Fermat’s Little Theorem 18
2.3.4. Algortima Lehman 19
2.3.5. Algoritma Euclidean 19
2.3.6. Bilangan Relatif Prima 20
2.3.7. Invers Modulo 20
2.4. Prinsip Kerja Algoritma LUC 21
(2)
2.4.2. Proses Enkripsi 23
2.4.3. Proses Dekripsi 23
2.5. Defenisi Kompresi 24
2.5.1. Algoritma Kompresi Goldbach Codes 26
2.5.2. Konsep Kompresi Data 28
82.5.3. Pengukuran Kinerja Kompresi Data 30
BAB 3. ANALISIS DAN PERANCANGAN SISTEM
3.1. Analisis 32
3.1.1. Analisis Masalah 32
3.1.2. Analisis Kebutuhan Sistem 34
3.1.3. Analisis Proses 36
3.2. Perancangan Sistem 36
3.3. Pemodelan Sistem 37
3.3.1. Use-Case Diaagram 37
3.3.2. Activity Diagram 38
3.3.2.1. Activity Diagram Proses Pembangkit Kunci 38 3.3.2.2. Activity Diagram Proses Enkripsi LUC 39 3.3.2.3. Activity Diagram Proses Kompresi Goldbach Codes 40 3.3.2.4. Activity Diagram Proses Dekompresi Goldbach Codes 41 3.3.2.5. Activity Diagram Proses Dekripsi LUC 41
3.2.2.6. Sequence Diagram 42
3.4. Perancangan Sistem 43
3.4.1. Pembuatan Algoritma Program 43
3.4.2. Alur Proses Sistem Secara Umum 44
3.4.3. Alur Proses Pembangkit Kunci 46
3.4.4. Alur Proses Enkripsi LUC 49
3.4.5. Alur Proses Kerja Dekripsi LUC 51
3.4.6. Alur Proses Kompresi Goldbach Codes 52
3.5. Perancangan Interface 56
3.5.1. Rancangan Halaman Utama 57
3.5.2. Rancangan Interface Halaman Aplikasi dan Pengamanan 58
3.5.3. Rancangan Halaman Enkripsi 58
3.5.4. Rancangan Halaman Kompresi 60
3.5.5. Rancangan Halaman Dekompresi 61
3.5.6. Rancangan Halaman Dekripsi 2
BAB 4. IMPLEMENTASI DAN PENGUJIAN SISTEM 64
4.1. Implementasi Sistem 64
4.1.1. Form Halaman Utama 64
4.1.2. Form Halaman Aplikasi Pengamanan dan Kompresi File 65
(3)
4.1.4. Form Halaman Kompresi 66
4.1.5. Form Halaman Dekompresi 67
4.1.6. Form Halaman Dekripsi 67
4.2. Pengujian Sistem 68
4.2.1. Pengujian Pembangkit Kunci dan Enkripsi File 68
4.2.2. Pengujian Kompresi 69
4.2.3. Pengujian Dekompresi 71
4.2.4. Pengujian Dekripsi 72
4.2.5. Pengujian Hasil 73
4.2.5.1 Hasil Pengujian Waktu Enkripsi dan Dekripsi 77 4.2.5.2. Hasill Pengujian String Homogen dan Heterogen 78 4.2.5.3. Hasil Uji Data File Enkripsi 79
BAB 5. KESIMPULAN DAN SARAN 81
5.1. Kesimpulan 81
5.2. Saran 82
DAFTAR PUSTAKA 83
Listring Program 85
DAFTAR RIWAYAT HIDUP
(4)
DAFTAR TABEL
halaman
Tabel 2.1. Perhitungan Untuk Mencari d 22
Tabel 2.2. Goldbach G0 Codes 27
Tabel 2.3. String diubah kedalam ASCII 28
Tabel 2.4. String diubah kedalam Goldbach G0 Codes 28
Tabel 3.1. ASCII Codes Proses Kompresi 54
Tabel 3.2. Goldbach G0 Codes untuk Proses Kompresi 75
Tabel 4.1 Hasil Uji Coba Lima Kali Percobaan 76
Tabel 4.2 Hasil Uji Waktu Enkripsi dan Dekripsi 77
Tabel 4.3. Pengujian String Homogen 78
(5)
DAFTAR GAMBAR
Halaman
Gambar 2.1. Urutan proses kriptografi 8
Gambar 2.2. Mesin enigma yang digunakan tentara Jerman 9
Gambar 2.3. Perbandingan plainteks dan cipherteks 11
Gambar 2.4. Skema Kriptografi Simetri 13
Gambar 2.5. Skema Algoritma Simetri 15
Gambar 2.6 Proses Algoritma Kompresi dan Dekompresi loseless 25
Gambar 2.7 Proses Kompresi dan Dekompresi lossy 25
Gambar 3.1 Diagram Ishikawa 33
Gambar 3.2. Use Case Diagram Pada Sistem 37
Gambar 3.3. Activity Diagram Pembangkit Kunci 38
Gambar 3.4. Activity Diagram Proses Enkripsi LUC 39
Gambar 3.5. Activity Diagram Proses Kompresi Goldbach Codes 40 Gambar 3.6. Activity Diagram Proses Dekompresi Goldbach Codes 41
Gambar 3.7. Activity diagram Dekripsi LUC 42
Gambar 3.8. Sequence Diagram Sistem 43
Gambar 3.9. Alur Sistem Flowchart Secara Umum 45
Gambar 3.10. Flowchart Alur Pembangkit Kunci 49
Gambar 3.11. Flowchart Enkripsi LUC 51
Gambar 3.12. Flowchart Dekripsi LUC 52
Gambar 3.13. Flowchart Kompresi Goldbach Codes 55
Gambar 3.14 Perancangan Halaman Utama 57
Gambar 3.15 Rancangan Aplikasi Pengamanan dan Kompresi 58
Gambar 3.16 Rancangan Halaman Enkripsi 59
Gambar 3.17 Rancangan Halaman Kompresi 60
Gambar 3.18 Rancangan Halaman Dekompresi 61
Gambar 3.19. Rancangan Halaman Dekripsi 62
Gambar 4.1. Halaman Utama 65
Gambar 4.2. Form Aplikasi Pengamanan dan Kompresi File PDF 65
Gambar 4.3. Form Halaman Enkripsi 66
Gambar 4.4. Form Halaman Kompresi 66
Gambar 4.5. Form Halaman Dekompresi 67
Gambar 4.6. Form Halaman Dekripsi 67
Gambar 4.7. Pencarian File PDF yang Akan di Enkripsi 68
Gambar 4.8. Tampilan Hasil Pencarian File PDF 69
Gambar 4.9. Hasil Enkripsi dan Pembangkit Kunci 69
Gambar 4.10. Pencarian File yang Akan di Kompresi 70
Gambar 4.11. Proses Kompresi 70
(6)
Gambar 4.13. Hasil Proses Dekompresi 71 Gambar 4.14. Pencarian File yang Akan di Dekripsi 71
Gambar 4.15. Tampilan Dekripsi 72
Gambar 4.16. Uji Enkripsi Pertama 73
Gambar 4.17. Uji Hasil Enkripsi Kedua 74
Gambar 4.18. Uji Hasil Enkripsi Ketiga 74
Gambar 4.19. Uji Hasil Enkripsi Keempat 75
Gambar 4.20. Uji Hasil Enkripsi Kelima 75