Perancangan Sistem ANALISIS PERANCANGAN SISTEM

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. Universitas Sumatera Utara 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. Universitas Sumatera Utara Proses tersebut dapat dilihat pada gambar 3.9 flowchart sistem secara umum. Gambar 3.9 Alur Sistem Flowchart Secara Umum Universitas Sumatera Utara 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-1q-1p+1q+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_withp As BigInteger, n As BigInteger As UInt16 Dim c_e As UInt16 Do rng.GetBytesrnd c_e = BitConverter.ToUInt16rnd, 2 Loop While GCDc_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.GetBytesrnd c_prima = CTypeBitConverter.ToUInt16rnd, 0 Mod 150, UInt16 Universitas Sumatera Utara Loop While c_prima 85 OrElse Not Lehmannc_prima Return c_prima End Function Private Shared Function GCDa As BigInteger, b As BigInteger As BigInteger If a Mod b = 0 Then Return b End If Return GCDb, a Mod b End Function Pseudocode Untuk Mencari Nilai tN Private Shared Function generate_tNp 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 Lehmannp As BigInteger As Boolean Dim tester As BigInteger, i As BigInteger = 0 System.Diagnostics.Debug.WriteLinep, p; Do rng.GetBytesrnd tester = BitConverter.ToUInt16rnd, 2 Mod p tester = BigInteger.ModPowtester, p - 1 2, p Fermat System.Diagnostics.Debug.WriteLinetester, tester; If tester 1 AndAlso tester - p -1 Then Return False End If System.Diagnostics.Debug.WriteLinei, i; i += 1 Loop While i 5 Return True End Function Pseudocode Untuk Mencari LCM Private Shared Function lcmParamArray empat As BigInteger As BigInteger Dim hasil As BigInteger = 1 For Each bil As BigInteger In empat hasil = lcmhasil, bil Universitas Sumatera Utara Next Return hasil End Function Private Shared Function lcma As BigInteger, b As BigInteger As BigInteger Return CTypea b GCDa, b, BigInteger End Function Pseudocode Untuk Invers Modulo Public Shared Function InverseModulara 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 = InlineAssignHelpery2, 1 x2 = InlineAssignHelpery1, 0 Else x1 = InlineAssignHelpery2, 0 x2 = InlineAssignHelpery1, 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 InlineAssignHelperx1, Ifx1 0, x1, modulo + x1 End Function Universitas Sumatera Utara 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 8365 6682 7378 6532 Universitas Sumatera Utara 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_LUCP 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.WriteLineVnew Return InlineAssignHelperVnew, IfVnew 0, Vnew, N + Vnew End Function Universitas Sumatera Utara 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 V [2... 2591213 ] = C. V [ i – 1] – V [ i – 2] mod 11227 Universitas Sumatera Utara 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: Universitas Sumatera Utara 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 Jumlah = 30 Universitas Sumatera Utara 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 11101011100101010011001010000000 0111 Adapun pseudocode untuk kompresi Goldbach Codes sebagai berikut: Private Shared Function e_goldbachi 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 lehmannj Then Bil_Prima.Addj End If Next For j As Integer = Bil_Prima.Count - 1 To 0 Step -1 bil = Bil_Primaj bil2 = i - bil If Bil_Prima.IndexOfbil2 = -1 Then Continue For End If If bil = bil2 Then Dim k As Integer = 1 bil = Bil_Primaj + k bil2 = i - bil While Not Bil_Prima.Containsbil2 bil = Bil_Primaj + k bil2 = i - bil k += 1 End While Universitas Sumatera Utara Exit For End If Next sb.Append1 For j As Integer = Bil_Prima.IndexOfbil - 1 To 0 Step -1 If Bil_Primaj bil2 Then sb.Insert0, 0c Else sb.Insert0, 1c End If Next Return sb.ToString End Function Alur flowchart untuk kompresi Goldbach Codes ditunjukkan pada gambar 3.13 Gambar 3.13 Flowchart Kompresi Goldbach Code Universitas Sumatera Utara 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 dekompresis_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 .ToStrings_valuesi, 2.PadLeft8, 0c Next If flag = 1 Then sb.Append Convert .ToStrings_valuesi, 2.Remove0, 1 Else sb.Append Convert .ToStrings_valuesi, 2.PadLeft8, 0c End If decodinghasil, sb Return hasil.ToArray End Function Private Shared Sub decodinghasil 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 sbi = 1c Then n += 1 End If bin.Appendsbi If n = 2 Then hasil.Addeg_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