• Tidak ada hasil yang ditemukan

DAFTAR PUSTAKA. Dharwanti and Wahono Panduan Singkat Bahasa Pemodelan Objek

N/A
N/A
Protected

Academic year: 2021

Membagikan "DAFTAR PUSTAKA. Dharwanti and Wahono Panduan Singkat Bahasa Pemodelan Objek"

Copied!
7
0
0

Teks penuh

(1)

DAFTAR PUSTAKA

Dharwanti and Wahono. 2003. Panduan Singkat Bahasa Pemodelan Objek

Standar.Yogyakarta:Andi.

Dony Ariyus. 2008. Pengantar Ilmu Kriptografi Teori, Analisis, dan Implementasi.

Yogyakarta:Andi.

Fowler, Martin. 2003. Panduan Singkat Bahasa Pemodelan Objek Standar.

Yogyakarta:Andi.

Henk C. A. van Tilborg. 2005. Encyclopedia of cryptography and security

Munawar. 2005. Pemodelan Visual dengan UML. Yogyakarta: Graha Ilmu.

Munir, Rinaldi, Kritografi, Penerbit Informatika, 2006.

Pressman, Roger S. 1997. Rekayasa Perangkat Lunak Pendekatan praktisi.

(2)

LAMPIRAN PROGRAM

Option Explicit

Public Declare Sub Sleep Lib "kernel32" (ByVal

dwMilliseconds As Long)

'Fungsi Shift Right sebanyak pnRotate bit

Public Function

FShiftRight(pcText As String, pnRotate As Long) As String FShiftRight = String(pnRotate, "0") & Left(pcText, Len(pcText) -pnRotate) End Function 'BINER KE HEKSA Public Function FBinerToHex(pcText As String) As String Dim i As Integer For i = 1 To Len(pcText) Step 4 FBinerToHex = FBinerToHex & Hex(FBinerToDec(Mid(pcText, i, 4))) Next i End Function 'HEKSA KE BINER Public Function FHexToBiner(pcText As String) As String Dim i As Integer For i = 1 To Len(pcText) FHexToBiner = FHexToBiner & FormatS(FDecToBiner(FHexToDec1 (UCase(Mid(pcText, i, 1)))), "0", 4) Next i End Function Public Function FAddBiner(pcBiner1 As String, pcBiner2 As String, Optional pnLength As Integer = -1) As String Dim i As Long Dim pcB1 As String Dim pcB2 As String

Dim Counter As Integer Dim Hasil As Integer

‘Apabila Panjang Biner Tidak Sama pcB1 = pcBiner1 pcB2 = pcBiner2 i = IIf(Len(pcB1) > Len(pcB2), Len(pcB1), Len(pcB2)) pcB1 = FormatS(pcB1, "0", i) pcB2 = FormatS(pcB2, "0", i) 'loop Counter = 0 For i = Len(pcB1) To 1 Step -1 Hasil = Val(Mid(pcB1, i, 1)) + Val(Mid(pcB2, i, 1)) Hasil = Hasil + Counter Counter = Hasil \ 2 FAddBiner = FAddBiner & Format(Hasil Mod 2)

Next i

If Counter = 1 Then FAddBiner = FAddBiner & "1" 'panjang text

i = pnLength If i = -1 Then i = Len(pcB1) End If

'Hasil Penjumlahan Biner FAddBiner = Right(FReverse(FAddBiner), i) If Len(FAddBiner) < i Then FAddBiner = FormatS(FAddBiner, "0", i) End If End Function 'DESIMAL KE BINER Public Function FDecToBiner(ByVal pnAngka As Double) As String

Dim nLoop As Double Dim nHasilBagi As Double Dim nSisaBagi As Double Dim cBiner1 As String

(3)

Dim cBiner2 As String nHasilBagi = pnAngka While nHasilBagi <> 0 nSisaBagi = FMod(nHasilBagi, 2)

cBiner1 = cBiner1 & Format(nSisaBagi) nHasilBagi = FDiv(nHasilBagi, 2) Wend If cBiner1 = "" Then cBiner1 = "0" 'Ambil Terbalik

For nLoop = Len(cBiner1) To 1 Step -1

cBiner2 = cBiner2 & Mid(cBiner1, nLoop, 1) Next nLoop 'Angka Biner FDecToBiner = cBiner End Function 'BINER KE DESIMAL Public Function FBinerToDec(pcText As String) As Double

Dim nLoop As Double Dim nHasil As Double nHasil = 0

'Konversi Dari Belakang

For nLoop = Len(pcText) To 1 Step -1 If Mid(pcText, nLoop, 1) = "1" Then nHasil = nHasil + (2 ^ (Len(pcText) - nLoop)) End If Next nLoop 'Angka Desimal FBinerToDec = nHasil End Function 'DESIMAL KE HEKSA Public Function FDecToHex(pnAngka As Double) As String

Dim nLoop As Double Dim nHasilBagi As Double Dim nSisaBagi As Double Dim cHex1 As String Dim cHex2 As String nHasilBagi = pnAngka While nHasilBagi <> 0 nSisaBagi = FMod(nHasilBagi, 16)

cHex1 = cHex1 & FDecToHex1(nSisaBagi) nHasilBagi = FDiv(nHasilBagi, 16) Wend

If cHex1 = "" Then cHex1 = "0"

'Ambil Terbalik

For nLoop = Len(cHex1) To 1 Step -1

cHex2 = cHex2 & Mid(cHex1, nLoop, 1) Next nLoop

'Angka Heksa FDecToHex = cHex2 End Function

'Konversi 1 Karakter Dari Desimal Ke Heksa

Public Function

FDecToHex1(pnAngka As Double) As String

Select Case pnAngka Case 0 To 9: FDecToHex1 = Format(pnAngka) Case 10: FDecToHex1 = "A" Case 11: FDecToHex1 = "B" Case 12: FDecToHex1 = "C" Case 13: FDecToHex1 = "D" Case 14: FDecToHex1 = "E" Case 15: FDecToHex1 = "F" End Select End Function 'HEKSA DE DESIMAL Public Function FHexToDec(pcText As String) As Double

Dim nLoop As Double Dim nHasil As Double nHasil = 0

'Konversi dari belakang For nLoop = Len(pcText) To 1 Step -1 nHasil = nHasil + FHexToDec1(Mid(pcText, nLoop, 1)) * (16 ^ (Len(pcText) -nLoop)) Next nLoop 'Angka Desimal FHexToDec = nHasil End Function

(4)

'Konversi 1 Karakter Dari Heksa Ke Desimal Public Function FHexToDec1(pcText As String) As Double

Select Case pcText

Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"

FHexToDec1 = pcText

Case "A": FHexToDec1 = 10 Case "B": FHexToDec1 = 11 Case "C": FHexToDec1 = 12 Case "D": FHexToDec1 = 13

Case "E": FHexToDec1 = 14

Case "F": FHexToDec1 = 15

End Select End Function

'Ambil Bentuk Proses Public Function

Bentuk(pcBinerText As String, Optional pnLenBiner As Long = -1) As String If pnLenBiner = -1 Then pnLenBiner = Len(pcBinerText) End If If strB = "B" Then Bentuk = pcBinerText Else Bentuk = FBinerToHex(FormatS(pcBinerTex t, "0", pnLenBiner)) End If End Function 'Fungsi Mod

Public Function FMod(pnA1 As Double, pnA2 As Double) As Double

Dim nMod As Double nMod = pnA1 / pnA2 FMod = pnA1 - (pnA2 * Int(nMod))

End Function 'Fungsi Div

Public Function FDiv(pnA1 As Double, pnA2 As Double) As Double

Dim nDiv As Double

nDiv = pnA1 / pnA2 FDiv = Int(nDiv) End Function

'Fungsi XOR Public Function

FOpBiner(pcTipe As String, pcText1 As String, pcText2 As String, Optional pnByte As Long = 0) As String

Dim nF As Long Dim cXOR As String Dim nByte1 As Long Dim cText1 As String Dim cText2 As String Dim cHasilXOR As String 'Banyak byte

nByte1 = pnByte If nByte1 = 0 Then

'Ambil yang terpanjang If Len(pcText1) > Len(pcText2) Then nByte1 = Len(pcText1) Else nByte1 = Len(pcText2) End If End If cText1 = FormatS(pcText1, "0", nByte1) 'Text-1 cText2 = FormatS(pcText2, "0", nByte1) 'Text-2 For nF = 1 To nByte1

If pcTipe = "XOR" Then cXOR = cXOR & IIf(Mid(cText1, nF, 1) = Mid(cText2, nF, 1), "0", "1") ElseIf pcTipe = "AND" Then

cXOR = cXOR & IIf(Mid(cText1, nF, 1) = "0" Or Mid(cText2, nF, 1) = "0", "0", "1")

ElseIf pcTipe = "OR" Then

cXOR = cXOR & IIf(Mid(cText1, nF, 1) = "1" Or Mid(cText2, nF, 1) = "1", "1", "0") End If Next nF 'Hasil XOR cHasilXOR = FormatS(cXOR, "0", nByte1) FOpBiner = cHasilXOR End Function

(5)

'Untuk Memformat String Pctext Sepanjang Pnlength, Kosong Diganti Dengan Pczerotext Public Function FormatS(ByVal pcText As String, pcZeroText As String, pnLength As Long) As String

If Len(pcText) > pnLength Then

'Jika lebih besar, maka cut

pcText = Left(pcText, pnLength)

ElseIf Len(pcText) < pnLength Then

'Jika lebih kecil, maka tambah

FormatS =

String(pnLength - Len(pcText), pcZeroText) & pcText

Else

FormatS = pcText End If

End Function 'Delay - sleep

Public Sub Delay(pnDelay As Integer) If pnDelay > 0 Then DoEvents Sleep pnDelay End If End Sub

'Balikkan Isi Text Public Function

FReverse(pcText As String) As String

Dim strReverse As String Dim i As Long

For i = Len(pcText) To 1 Step -1

strReverse =

strReverse & Mid(pcText, i, 1) Next i 'Hasil FReverse = strReverse End Function Option Explicit 'Variabel S-BOX Public TT(7) As String Public T(256) As String 'Kunci WAKE - dalam biner Public strKunciBiner As String 'Kunci WAKE - dalam biner Public strPlain As String Public strCipher As String

Public strKunci As String Public nPutaran As Integer 'Bentuk Output - Biner / Heksa Public strB As String

'PROSES S-BOX

Public Sub ProsesSBox(pcKunci As String)

Dim X As String Dim Z As String Dim N As Integer Dim Temp As String

'1. Inisialisasi nilai TT[0] - T[7] TT(0) = FHexToBiner("726a8f3b") TT(1) = FHexToBiner("e69a3b5c") TT(2) = FHexToBiner("d3c71fe5") TT(3) = FHexToBiner("ab3c73d2") TT(4) = FHexToBiner("4d3a8eb3") TT(5) = FHexToBiner("0396d6e8") TT(6) = FHexToBiner("3d4c2f7a") TT(7) = FHexToBiner("9ee27cf3") '2. Inisialisasi nilai awal untuk T[0] - T[3]

' Pecah kunci (128 bit) menjadi 4 kelompok X = "" For N = 1 To Len(pcKunci) X = X & FormatS(FDecToBiner(Asc(Mid(pc Kunci, N, 1))), "0", 8) Next N T(0) = Mid(X, 1, 32) T(1) = Mid(X, 33, 32) T(2) = Mid(X, 65, 32) T(3) = Mid(X, 97, 32) '3. Untuk N = 4 to 255, lakukan proses berikut For N = 4 To 255 'X = T[n-4] + T[n-1] X = FAddBiner(T(N -4), T(N - 1), 32) 'T[n] = X>>3 XOR TT[X AND 7] T(N) = FOpBiner("XOR", FShiftRight(X, 3), TT(FBinerToDec(FOpBiner("AND", X, "111"))), 32)

(6)

Next N

'4. Untuk N = 0 to 22, lakukan proses berikut For N = 0 To 22

'T[n] = T[n] + T[n+89] T(N) = FAddBiner(T(N), T(N + 89), 32)

Next N

'5. Set nilai untuk variabel di bawah ini X = T(33) Z = FOpBiner("OR", T(59), FHexToBiner("01000001"), 32) Z = FOpBiner("AND", Z, FHexToBiner("FF7FFFFF"), 32) X = FAddBiner(FOpBiner("AND", X, FHexToBiner("FF7FFFFF"), 32), Z, 32) '6. Untuk T[0] ... T[255] For N = 0 To 255 'X = (X And FF7FFFFF) + Z X = FAddBiner(FOpBiner("AND", X, FHexToBiner("FF7FFFFF"), 32), Z, 32) 'T[n] = T[n] AND 00FFFFFF XOR X T(N) = FOpBiner("XOR", FOpBiner("AND", T(N), FHexToBiner("00FFFFFF"), 32), X, 32) Next N

'7. Inisialisasi Nilai Untuk Beberapa Variabel Berikut T(256) = T(0) X = FOpBiner("AND", X, FDecToBiner(255), 32) '8. Untuk T[0] ... T[255] For N = 0 To 255 'Temp = (T[n XOR X] XOR X) AND 255 Temp = T(FBinerToDec(FOpBiner("XOR", FDecToBiner(N), X, 32))) Temp = FOpBiner("XOR", Temp, X, 32) Temp = FOpBiner("AND", Temp, FDecToBiner(255), 32) 'T[n] = T[Temp] T(N) = T(FBinerToDec(Temp)) 'T[X] = T[n+1] T(FBinerToDec(X)) = T(N + 1) Next N End Sub

'PROSES PEMBENTUKAN KUNCI Public Sub GetWakeKEY(pcKunci As String, pnPutaran As

Integer)

Dim A() As String Dim B() As String Dim C() As String Dim D() As String Dim N As Integer Dim X As String ReDim A(pnPutaran) ReDim B(pnPutaran) ReDim C(pnPutaran) ReDim D(pnPutaran) '1. Inisialisasi nilai awal untuk A[0], B[0], C[0], D[0]

' Pecah kunci (128 bit) menjadi 4 kelompok X = "" For N = 1 To Len(pcKunci) X = X & FormatS(FDecToBiner(Asc(Mid(pc Kunci, N, 1))), "0", 8) Next N A(0) = Mid(X, 1, 32) B(0) = Mid(X, 33, 32) C(0) = Mid(X, 65, 32) D(0) = Mid(X, 97, 32) '2. Putaran kunci For N = 1 To pnPutaran A(N) = FungsiM(A(N -1), D(N - 1)) B(N) = FungsiM(B(N -1), A(N)) C(N) = FungsiM(C(N -1), B(N)) D(N) = FungsiM(D(N -1), C(N)) Next N 'Bit Kunci strKunciBiner = D(N - 1) End Sub

'FUNGSI M(X,Y) DARI REGISTER A, B, C DAN D

Public Function FungsiM(pX As String, pY As String) As String

Dim Temp As String Dim Temp1 As String 'Temp1 = X + Y

(7)

Temp1 = FAddBiner(pX, pY, 32)

'Temp = Temp1 Shift >> 8 kali Temp = FShiftRight(Temp1, 8) 'Temp1 = (X + Y) And 255 Temp1 = FBinerToDec(FOpBiner("AND", Temp1, "11111111")) 'Temp1 = T[(X + Y) And 255)] Temp1 = T(Val(Temp1)) 'di-XOR T(X + Y) Temp = FOpBiner("XOR", Temp, Temp1, 32) 'Kembalikan nilai FungsiM = Temp End Function 'PROSES ENKRIPSI Public Sub WAKEEncryption(pcEnkripsi As String) Dim X As String Dim X1 As String Dim X2 As String Dim N As Integer Dim cHasil As String 'Text Enkripsi strPlain = pcEnkripsi 'Text-enkripsi dalam bentuk biner X = "" For N = 1 To Len(strPlain) X = X & FormatS(FDecToBiner(Asc(Mid(st rPlain, N, 1))), "0", 8) Next N X1 = "": X2 = "": cHasil = ""

For N = 1 To Len(X) Step 8 'Kunci

X1 =

Mid(strKunciBiner, (N Mod 32), 8)

'Hasil - XOR dengan kunci

X2 = FOpBiner("XOR", Mid(X, N, 8), X1, 8)

'Simpan ke karakter cHasil = cHasil & Chr(FBinerToDec(X2))

Next N

'Return Cipher Text strCipher = cHasil End Sub 'PROSES DEKRIPSI Public Sub WAKEDecryption(pcDekripsi As String) Dim X As String Dim X1 As String Dim X2 As String Dim N As Integer Dim cHasil As String 'Text Dekripsi strCipher = pcDekripsi 'Text-Dekripsi dalam bentuk biner X = "" For N = 1 To Len(strCipher) X = X & FormatS(FDecToBiner(Asc(Mid(st rCipher, N, 1))), "0", 8) Next N X1 = "": X2 = "": cHasil = ""

For N = 1 To Len(X) Step 8 'Kunci

X1 = Mid(strKunciBiner, (N Mod 32), 8)

'Hasil - XOR dengan kunci X2 = FOpBiner("XOR", Mid(X, N, 8), X1, 8) 'Simpan ke karakter cHasil = cHasil & Chr(FBinerToDec(X2)) Next N

'Return Plain Text strPlain = cHasil End Sub

Referensi

Dokumen terkait

Serta masih banyak keterbatasan-keterbatasan seperti pelayanan IB(Inseminasi Buatan), kapasitas kandang sapi, dan tempat fermentasi jerami yang masih sangat sederhana.(Sinar

Imbangan daging-tulang karkas juga menunjukkan hasil yang tidak berbeda nyata (P&gt;0,05) dengan rata-rata 3,57. Simpulan dari penelitian ini adalah perlakuan pemberian

Satker SNVT PBl di Propinsi, berdasarkan rekomendasi Team leader KMP P2KP Advance akan melakukan proses penelaahan dengan mengaju kepada ketentuan dan mekanisme

Metode penelitian menggunakan teknik pengumpulan data [6] yang dimodifikasi, yaitu: 1) Studi literatur dan survey lapangan, dengan mengadakan wawancara (interview)

Pengembangan tanaman kopi arabika di wilayah nagori Sait Buttu Saribu, Kecamatan Pamatang Sidamanik, Kabupaten Simalungun sudah dilakukan oleh masyarakat petani kopi sejak

Sistem imun adalah suatu sistem dalam tubuh, baik manusia maupun hewan, yang mempunyai kemampuan mengenal suatu benda asing terhadap tubuh dan selanjutnya tubuh akan

Uji kualitatif andrografolid dalam ekstrak dilakukan dengan jalan melarutkan andrografolid ataupun ekstrak dalam etil asetat, ditotolkan pada plat KLTKT, dieluasikan pada

karyawan dan memberikan dampak positif juga untuk. berbagai perusahaan (Rampersad, 2006;