Implementasi Algoritma Kunci Publik Luc dan Algoritma Kompresi Goldbach Codes untuk Perancangan Aplikasi Pengamanan dan Kompresi File Pdf

(1)

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