Implementasi Blowfish Dan Diffie Hellman Pada Email
Implementasi Blowfish Dan Diffie Hellman Pada Email
SKRIPSI
Judul
Nama
Nim
Jurusan
Title
ABSTRACT
Electronic mail (email) is an electronic communication system that is currently
used for communication in a variety of interests, even in sending important information
and confidential. With so many important data are often confidential, then email
susceptible to attacks from outsiders. The attack can be either data theft email, changing
the contents of the email, and others. One way in securing this email is to perform
encryption or encryption.
In this study built mail client application that is therein applied algorithm which
is one algorithm Blowfish symmetric block cipher for encryption and decryption on an
email attachment. In this application also applied protocol Diffie-Hellman key exchange
for session key distribution security that will be used in the encryption-decryption
process.
Based on research, the application of Diffie-Hellman protocol and the Blowfish
algorithm can be implemented well, which indicated the suitability of the generated key
sender and receiver, encryption-decryption testing goes well, and maintained the integrity
of the data. Based on testing, Blowfish algorithm is applied in this email security system
has a good level of security, namely the requirement of Avalanche Effect values between
45% -60%. Avalanche Effect test results to changes in key bits produces an average value
of 52.01% of ten times the experiment, with the smallest value obtained was 45.57% and
the largest value is 56.86%.
Key Words: Email, Cryptography, Blowfish, Diffie-Hellman, Avalanche Effect
KATA PENGANTAR
Puji syukur kehadirat Tuhan Yang Maha Esa, yang telah melimpahkan
segala rahmat-Nya sehingga penulis dapat menyelesaikan penelitian tugas akhir
ini dengan baik.
Penelitian tugas akhir dengan judul Implementasi Keamanan Email
Menggunakan Pertukaran Kunci Diffie-Hellman dan Algoritma Enkripsi Blowfish
ini disusun dalam rangkaian kegiatan pelaksanaan tugas akhir di Jurusan Ilmu
Komputer FMIPA UNUD.
Sehubungan dengan telah terselesaikannya laporan ini, maka diucapkan
terima kasih dan penghargaan kepada berbagai pihak yang telah
membantu
4. Bapak dan ibu dosen di Jurusan Ilmu Komputer yang telah mendukung
pembuatan tugas akhir ini.
5. Teman-teman di Jurusan Ilmu Komputer yang telah memberikan dukungan
moral dalam penyelesaian tugas akhir ini.
Mengingat terbatasnya pengetahuan dan pengalaman yang penulis miliki
maka penulis menyadari laporan ini jauh dari sempurna. Oleh karena itu penulis
mengharapkan kritik dan saran dari pembaca yang bersifat membangun.
Bukit Jimbaran, September 2014
Penulis
DAFTAR ISI
ABSTRAK..............................................................................................................iv
ABSTRACT.............................................................................................................v
KATA PENGANTAR.............................................................................................vi
DAFTAR ISI..........................................................................................................vii
DAFTAR TABEL...................................................................................................ix
DAFTAR GAMBAR...............................................................................................x
DAFTAR LAMPIRAN..........................................................................................xii
BAB I.......................................................................................................................1
PENDAHULUAN...................................................................................................1
1.1 Latar Belakang...............................................................................................1
1.2 Rumusan Masalah..........................................................................................2
1.3 Tujuan.............................................................................................................3
1.4 Batasan Masalah.............................................................................................3
1.5 Manfaat...........................................................................................................3
1.6 Metodologi Penelitian....................................................................................3
1.6.1 Perancangan Sistem.................................................................................3
1.6.2 Pengujian Sistem.....................................................................................4
1.6.3 Pengujian Avalanche Effect.....................................................................6
BAB II......................................................................................................................7
TINJAUAN PUSTAKA...........................................................................................7
2.1 Kriptografi......................................................................................................7
2.2 Pertukaran Kunci DIffie Hellman...............................................................8
2.3 Algoritma Blowfish......................................................................................11
2.4 Electronic Mail (Email)................................................................................15
2.5 Fungsi Hash MD-5.......................................................................................16
2.6 Avalanche Effect...........................................................................................16
BAB III..................................................................................................................17
ANALISIS DAN PERANCANGAN SISTEM.....................................................17
DAFTAR TABEL
DAFTAR GAMBAR
10
11
DAFTAR LAMPIRAN
1. Source Code Implementasi Diffie-Hellman
2. Source Code Implementasi Blowfish
12
BAB I
PENDAHULUAN
1.1 Latar Belakang
Electronic mail(email) adalah suatu sistem komunikasi elektronik yang
saat ini telah menjadi bagian yang penting dalam melakukan komunikasi.
Kecepatan, ketepatan serta keunggulan-keungulan lainnya dibanding alat
komunikasi lainnya membuat email banyak dipakai dalam berbagai kepentingan,
bahkan dalam mengirim informasi-informasi penting dan rahasia. Dengan
banyaknya data-data penting yang sering juga bersifat rahasia, maka email rentan
mengalami penyerangan dari pihak luar. Penyerangan tersebut dapat berupa
pencurian data email, pengubahan isi email, dan lain-lain. Salah satu cara dalam
mengamankan email ini adalah dengan melakukan enkripsi atau penyandian.
Pada penelitian ini, pengamanan email akan dilakukan dengan menerapkan
algoritma enkripsi Blowfish. Penggunaan algoritma kunci simetri seperti Blowfish lebih
mudah diterapkan pada proses enkripsi-dekripsi karena mempunyai struktur yang
sederhana. Keunggulan algoritma Blowfish adalah dapat mengenkripsi data pada
microprocessor 32 bit dengan rata rata 18 clock cycle per byte, lebih cepat dari
algoritma DES dan IDEA. Dengan strukturnya yang terdiri dari 64 bit block,
panjang kuncinya yang merupakan variabel dengan panjang hingga 448 bit, dan
iterasi sebanyak 16 kali membuat algoritma Blowfish terjamin keamanannya
(Pachghare, 2009).
Untuk lebih mengamankan proses enkripsi-deskripsi, perlu dilakukan suatu
protokol pertukaran kunci (key exchange). Hal ini disebabkan karena algoritma simetris
mempunyai kelemahan yaitu memakai kunci yang sama dalam melakukan enkripsidekripsi sehingga jika kunci tersebut dipertukarkan pada saluran yang tidak aman akan
membuat pihak lain yang berhasil menyadap kunci tersebut akan dapat mendekripsi data
yang dipertukarkan. Salah satu algoritma pertukaran ini adalah algoritma DiffieHellman Keamanan metode Diffie-Hellman ini berasal dari permasalahan
13
perhitungan
algoritma
diskrit,
dibandingkan
dengan
melakukan
1.3 Tujuan
Adapun tujuan Penelitian ini adalah sebagai berikut:
Hasil Perbandingan
(sama / tidak sama)
penelitian Pamungkas et. al. (2006), mengutip dari buku Applied Cryptography
karya Bruce Schneier mengatakan bahwa suatu avalanche effect dikatakan baik
jika perubahan bit yang dihasilkan berkisar antara 45% -60%, dan akan sangat
baik bila perubahan bit yang dihasilkan berkisar 50% atau separuhnya. Adapun
rumus untuk mendapatkan nilai avalanche effect adalah sebagai berikut
(Scheiner,1996):
Avalanche Effect(AE) =
bit beruba h
bit total
x 100%
BAB II
TINJAUAN PUSTAKA
2.1 Kriptografi
Perkembangan teknologi saat ini memungkinkan pengiriman data dari satu
pihak ke pihak lainnya menjadi lebih cepat dan mudah. Namun perkembangan
teknologi ini juga membuka celahcelah keamanan pada pengiriman data tersebut,
sehingga memungkinkan terjadinya serangan terhadap data yang dikirimkan.
Pihak yang tidak berhak mungkin saja dapat membaca isi pesan yang seharusnya
bersifat rahasia. Untuk mengatasi hal ini banyak cara yang digunakan untuk
mengamankan data, salah satunya adalah dengan menggunakan kriptografi.
Kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan.
Kriptografi adalah sebuah ilmu menyandikan dan mengacak suatu pesan untuk
menjaga keamanan dari isi pesan tersebut. Kriptografi diperlukan untuk
menghindari pihak yang tidak berhak mengetahui isi dari pesan yang dikirimkan
tersebut. Dengan adanya kriptografi, isi dari pesan akan diacak sedemikian rupa
menggunakan algoritma kriptografi tertentu sehingga akan menghasilkan sebuah
pesan yang acak yang tidak dapat dibaca sebelum isi pesan yang sebenarnya
kembali dimunculkan menggunakan algoritma kriptografi tersebut. (Schneier,
1996)
Pesan asli sebelum dienkripsi disebut plain text.Sedangkan pesan yang
sudah diacak disebut cipher text. Proses pengubahan plain text menjadi cipher
text disebut dengan enkripsi, sedangkan proses pengubahan cipher text kembali
menjadi plain text disebut dengan dekripsi.
Plain Text
Cipher Text
Enkripsi
Plain Text
Dekripsi
10
11
Presiden
perusahaan
Counterpane
Internet
Security.Inc,
12
maka tambahkan bitnya, supaya dalam operasi nanti sesuai dengan datanya.
2. Hasil pengambilan tadi dibagi 2, 32-bit pertama disebut XL, 32-bit yang
kedua disebut XR.
3. Selanjutnya lakukan operasi berikut:
For i = 1 to 16:
XL = XL XOR Pi
XR = F(XL) XOR XR
Tukar XL dan XR
4. Setelah iterasi ke-enam belas, tukar XL dan XR lagi untuk melakukan undo
pertukaran terakhir. Lalu lakukan
XR = XR XOR P17
XL = XL XOR P1
5. Proses terakhir satukan kembali XL dan XR sehingga menjadi 64-bit kembali
(Scheiner 1996)
13
14
(Scheiner 1996)
Cara untuk melakukan dekripsi sama dengan cara untuk melakukan
enkripsi seperti diatas, namun pada proses dekripsi urutan P1, P2, , P18
digunakan dalam urutan terbalik.
Subkunci dihitung menggunakan algoritma Blowfish, metodanya adalah
sebagai berikut:
1. Pertama-tama inisialisasi P-array dan kemudian empat S-box secara berurutan
dengan string yang tetap. String ini terdiri digit hexadesimal dari Pi.
2. XOR P1 dengan 32 bit pertama kunci, XOR P2 dengan 32 bit kedua dari kunci
dan seterusnya untuk setiap bit dari kunci (sampai P 18). Ulangi terhadap bit
kunci sampai seluruh P-array di XOR dengan bit kunci.
3. Enkripsi semua string nol dengan algoritma Blowfiah dengan menggunakan
subkunci seperti dijelaskan pada langkah (1) dan (2).
4. Ganti P1 dan P2 dengan keluaran dari langkah (3)
5. Enkripsi keluaran dari langkah (3) dengan algoritma Blowfish dengan
subkunci yang sudah dimodifikasi.
6. Ganti P3 dan P4 dengan keluaran dari langkah (5).
7. Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, dan kemudian
seluruh keempat S-box berurutan, dengan keluaran yang berubah secara
berlanjut dari algoritma Blowfish (Scheiner 1996)
Blowfish mempunyai throughput, kecepatan, dan konsumsi memori yang
lebih baik dibandingkan algoritma cipher block lainnya seperti AES, DES, dan
3DES. (Mandal, 2012)
Algoritma Blowfish belum ditemukan kelemahan yang berarti hanya
adanya weak key dimanadua entri dari S-box mempunyai nilai yang sama.
15
enkripsi
memperlambatpengiriman
email.
Namun
16
Fungsi hash satu arah dibuat berdasarkan ide tentang fungsi pemampatan.
Fungsi hash adalah sebuah fungsi atau persamaan matematika yang mengambil
input dengan panjang variabel (preimage) dan merubahnya menjadi panjang yang
tetap (biasanya lebih pendek), keluarannya biasa disebut nilai hash. MD-5 adalah
salah satu aplikasi yang digunakan untuk mengetahui bahwa pesan yang dikirim
tidak ada perubahan sewaktu berada di jaringan. Jika ada perubahan nilai pada file
yang diuji dengan md5, maka file tersebut telah berubah. (Sofwan, 2006)
Message Digest 5 (MD-5) adalah salah satu penggunaan fungsi hash satu
arah yang paling banyak digunakan. MD-5 merupakan fungsi hash kelima yang
dirancang oleh Ron Rivest. MD-5 memproses teks masukan ke dalam blok-blok
bit sebanyak 512 bit, kemudian dibagi ke dalam 32 bit sub blok sebanyak 16 buah.
Keluaran dari MD-5 berupa 4 buah blok yang masing-masing 32 bit yang mana
akan menjadi 128 bit yang biasa disebut nilai hash.
2.6 Avalanche Effect
Avalanche effect adalah salah satu indikator baik atau tidaknya algoritma
yang digunakan tersebut. Dalam penelitian Pamungkas et. al. (2006), mengutip
dari buku Applied Cryptography karya Bruce Schneier mengatakan bahwa suatu
avalanche effect dikatakan baik jika perubahan bit yang dihasilkan berkisar antara
45% -60%, dan akan sangat baik bila perubahan bit yang dihasilkan berkisar 50%
atau separuhnya. Adapun rumus untuk mendapatkan nilai avalanche effect adalah
sebagai berikut (Scheiner,1996):
Avalanche Effect(AE) =
bit beruba h
bit total
x 100%
BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Kebutuhan
Sistem yang akan dibuat bertujuan untuk mengamankan pengiriman pesan
pada email. Pengamanan email tersebut akan dilakukan dengan cara mengenkripsi
file attachment berupa file teks dan office yang dikirim melalui email client.
Proses enkripsi-dekripsi menggunakan algoritma cipher block Blowfish, dimana
untuk kunci enkripsi dan dekripsinya akan dihasilkan melalui protokol pertukaran
kunci Diffie-Hellman.
Sistem terdiri dari sebuah mail server yang bertugas untuk mengelola user
email dan menjalankan proses pertukaran email. Selain itu sistem juga
mempunyai 3 buah client yang dapat melakukan pertukaran kunci dan juga
melakukan enkripsi-dekripsi file serta pengiriman dan penerimaan email melalui
antarmuka mail client di masing-masing komputer client. Server dibuat pada OS
Windows 7. Pada server dipasang aplikasi XAMPP yang di dalamnya mempunyai
program Mercury Mail Server dan juga Mysql. Pada masing-masing komputer
klien akan dipasang aplikasi mail client yang dibuat pada penelitian ini, yang
memiliki fitur untuk melakukan enkripsi-dekripsi serta melakukan pertukaran
kunci. Aplikasi ini menggunakan bahasa pemrograman VB.Net dan dibuat
menggunakan aplikasi Visual Studio 2010.
Dari penjelasan di atas, maka sistem ini harus dapat memenuhi kebutuhan
kebutuhan sebagai berikut:
1. Dapat melakukan protokol pertukaran kunci Diffie Hellman
2. Dapat melakukan enkripsi dan dekripsi pada file attachment email
menggunakan algoritma Blowfish
3. Dapat melakukan pengiriman dan penerimaan email
17
18
19
7.
buah komputer client yang dirancang untuk dapat melakukan prosesproses yang telah dijelaskan sebelumnya yaitu protokol pertukaran kunci
Diffie-Hellman, enkripsi-dekripsi pesan, dan juga pengiriman dan
penerimaan email.
8.
9. 3.2 Perancangan Sistem
10.
Flow Diagram (DFD) dan juga Flowchart yang akan dijelaskan sebagai
berikut:
11. 3.2.1 Data Flow Diagram (DFD)
12.
dibuat, dimana terdapat dua entitas yaitu pengirim dan penerima, serta
sebuah data proses yaitu Aplikasi Kemanan Email. DFD level 0 ini
menjelaskan secara umum data apa saja yang menjadi input dari user ke
sistem, dan data apa saja yang menjadi output dari sistem ke user yang
dalam hal ini adalah pengirim dan penerima email. DFD level 0 sistem
ditunjukan pada gambar berikut:
13.
14. Gambar 3.2 DFD Level 0
15.
20
16.
17. Gambar 3.3 DFD Level 1
18. 3.2.2 Flowchart
19.
21
21.
22. Gambar 3.2 Flowchart Sistem
23.
mod p
22
24.
25. Gambar 3.3 Flowchart Pertukaran Kunci DH Pada Pengirim
23
26.
27. Gambar 3.4 Flowchart Pertukaran Kunci DH Pada Penerima
28.
pada file dapat dilakukan. Adapun langkah pertama dalam proses enkripsi
Blowfish adalah dengan memasukan file plaintext dan kunci sesi yang
telah didapatkan. Ubah plaintext ke dalam bentuk biner dan bagi ke dalam
blok blok bit sepanjang 64 bit. Asumsikan blok 64 bit tersebut sebagai X
yang akan dipakai dalam enkripsi, lalu hasil pengambilan tadi dibagi 2
yaitu 32-bit pertama disebut XL, 32-bit yang kedua disebut XR.
Selanjutnya lakukan operasi berikut:
29.
30.
31.
32.
For i = 1 to 16:
XL = XL XOR Pi
XR = F(XL) XOR XR
Tukar XL dan XR
24
33. Setelah iterasi ke-enam belas, tukar XL dan XR lagi untuk melakukan
undo pertukaran terakhir. Lalu lakukan: XR = XR XOR P17 dan XL = XL
XOR P1.
34. Proses terakhir satukan kembali XL dan XR sehingga menjadi 64-bit
kembali. Untuk proses dekripsi, prosesnya sama persis dengan proses
enkripsi hanya saja urutan iterasinya dibalik dimulai dari P18. Langkahlangkah algoritma Blowfish ditunjukan pada gambar berikut:
35.
37. BAB IV
38. HASIL DAN PEMBAHASAN
39. 4.1. Lingkungan Perancangan dan Implementasi
40.
Dalam
randomValue = generator.Next(4, 6)
Dim ulang As String
ulang = ""
For i = 0 To randomValue
ulang = String.Concat(ulang, "",
generator.Next(1,9).ToString())
51.
Next
52.
Integer.TryParse(ulang, randomValue)
53.
Label7.Text = ulang
54.
Return randomValue
55.
End Function
56.
Private Function Prima(ByVal Angka As BigInteger) As
Boolean
57.
Dim i As BigInteger
58.
Dim tanda As Boolean = False
59.
Dim cek As BigInteger
60.
cek = 0
61.
If Angka = 1 Then
62.
tanda = False
63.
ElseIf Angka = 2 Then
64.
tanda = True
65.
ElseIf Angka > 2 Then
25
25
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
i = 2
For i = 2 To Angka - 1
If Angka Mod i = 0 Then
cek += 1
End If
Next i
If cek = 0 Then
tanda = True
Else tanda = False
End If
End If
Return tanda
End Function
Private Sub AcakBil1()
Dim i As Integer
For i = 0 To 1
If Prima(acak1()) = True Then
txtP.Text = Label7.Text
i = 1
Else i = 0
End If
Next i
88.
Hellman diperlukan sebuah nilai prima p dan sebuah bilangan basis g yang
nilainya lebih kecil dari p. Untuk itu dibuat suatu fungsi yang berguna
untuk mengacak nilai p dan g dan juga sebuah fungsi prima untuk nilai p
sehingga bilangan yang diacak nanti dapat memenuhi persyaratan.
89. 2. Proses perhitungan kunci
90. Adapun proses perhitungan kunci pada program adalah sebagai berikut:
91. Dim hasil As BigInteger
92.
93.
94.
dan B yaitu nilai yang akan dipertukarkan antara pengirim dan penerima.
Nilai tersebut didapat dari rumus A = g x mod p dan B = g y mod p. Setelah
itu untuk menghitung kunci akan menggunakan rumus K a = B x mod p dan
Kb = B y mod p. Untuk itu dibuat sebuah fungsi untuk melakukan operasi
nilai1 = nilai2nilai3 mod nilai4, sehingga dibuat fungsi hitung modulus.
Fungsi hitung modulus ini akan digunakan untuk menghitung nilai yang
dipertukarkan dan juga nilai kunci sesi.
95. 4.3 Implementasi Algoritma Blowfish ke Dalam Sistem
96. 1. Proses Enkripsi
26
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
box, maka kunci tersebut dapat dipakai dalam proses enkripsi. Untuk
proses enkripsi data akan dibaca dalam bentuk byte yang akan diambil
perblok, dimana satu blok berisi 8 byte, yang jika kurang dari 8 byte akan
dilakukan padding byte. Setelah itu blok-blok tersebut akan dienkripsi
dengan langkah-langkah yang ada algoritma Blowfish. Stelah proses
enkripsi selesai blok-blok tersebut kemudian akan digabung lagi sehingga
menjadi ciphertext yang utuh.
108.
2. Proses dekripsi
109.
110.
111.
112.
113.
115.
116.
117.
118.
119.
120.
Decipher(xL, xR)
Dim xL_1 As UInt32 = xR
Dim xR_1 As UInt32 = xL
For i As Int32 = P.Length - 1 To 2 Step -1
114. swap(xL_1, xR_1)
xL_1 = xL_1 Xor P(i)
xR_1 = F(xL_1) Xor xR_1
Next
xR = xR_1 Xor P(1)
xL = xL_1 Xor P(0)
121.
27
126.
127.
128.
129.
ditampilkan halaman utama dari mail client yang berisi kotak masuk email
dan juga berisi option untuk membaca pesan, menulis pesan, dan juga
melakukan generate key.
130.
131.
132.
yang terenkripsi, maka akan dilakukan protokol pertukaran DiffieHellman. Pada form kunci ini, user harus memilih posisinya apakah
sebagai pengirim atau sebagai penerima email. Pengirim email memiliki
option acak untuk mengacak nilai p dan g. Pengirim dan penerima harus
28
134.
135.
136.
29
138.
139.
140.
141.
142.
143.
144.
dan juga kunci yang akan digunakan. Jika ingin mengganti file yang akan
30
146.
147.
148.
penerima dapat membaca email tersebut melalui form baca pesan ini. Pada
form ini ditampilkan alamat pengirim, email subject, email body, dan file
attachment yang diterima yang dapat diunduh. Setelah pengunduhan
selesai akan ditampilkan pilihan untuk mendekripsi file tersebut atau tidak.
Jika memilih yes maka akan masuk ke form dekripsi.
150.
151.
31
152.
153.
154.
155.
156.
157.
juga kunci yang digunakan. Untuk menyimpan file dekripsi pada lokasi
yang diinginkan, maka penerima menekan tombol folder. Setelah itu
pengirim menekan tombol dekripsi untuk melakukan dekripsi terhadap
file attachment tersebut.
158.
32
159.
160.
161.
apakah file setelah dienkripsi telah berbeda dari file aslinya sehingga tidak
dapat diketahui isi dari plaintext tersebut. Selain itu, pengujian ini
dilakukan untuk menguji apakah file yang telah dienkripsi tersebut dapat
kembali seperti semula setelah dilakukan dekripsi. Pengujian dilakukan
pada file-file berekstensi .txt,.docx,.xls,.ppt, dan .jpg, yang akan
ditampilkan pada gambar-gambar berikut:
163.
164.
165.
166.
33
167.
168.
169.
170.
171.
172.
34
173.
174.
175. Setelah
nilai
hexadecimal
file
berubah
menjadi
7C53D8219B006DABC3A8E000D261CF3E
176.
177.
178.
179.
tersebut kembali seperti semula, yaitu plaintext yang dapat dibaca seperti
sebelum dienkripsi.
180.
35
181.
182.
183.
184.
185.
186.
Setelah dilakukan enkripsi file tersebut tidak dapat dibuka. Hal ini
terjadi karena nilai ekstensi file tersebut juga ikut berubah saat dilakukan
enkripsi.
187.
36
188.
189.
190.
191.
192.
193.
194.
Setelah dilakukan dekripsi maka file kembali dapat dibuka dan
dapat dibaca isinya.
195.
196.
37
197.
198.
199.
200.
201.
Setelah dilakukan enkripsi file tersebut tidak dapat dibuka. Hal ini
terjadi karena nilai ekstensi file tersebut juga ikut berubah saat dilakukan
enkripsi.
202.
203.
204.
205.
38
206.
207.
208.
209.
Setelah dilakukan dekripsi maka file kembali dapat dibuka dan
dapat dibaca isinya.
210.
211.
212.
213.
214.
39
215.
216.
Setelah dilakukan enkripsi file tersebut tidak dapat dibuka. Hal ini
terjadi karena nilai ekstensi file tersebut juga ikut berubah saat dilakukan
enkripsi.
217.
218.
219.
220.
221.
222.
40
223.
224.
Setelah dilakukan dekripsi maka file kembali dapat dibuka dan
dapat dibaca isinya.
225.
226.
227.
228.
229.
230.
231.
Setelah dilakukan enkripsi file tersebut tidak dapat dibuka. Hal ini
terjadi karena nilai ekstensi file tersebut juga ikut berubah saat dilakukan
enkripsi.
41
232.
233.
234.
235.
236.
237.
238.
239.
240.
Berikut merupakan contoh perhitungan enkripsi Blowfish
pada file test.txt dengan menggunakan kunci 1234 :
42
241.
1. Ekspansi kunci
0X18AD02E4,
0X391CC9AC,
0XDD7C5FBD,
0XEB6E681,
0X84753A23,
0XA324E6ED,
0XB84BC82F}
c. Masukan 64 bit data 0 pada proses enkripsi. Keluarannya digunakan
untukmenggantikan p1 dan p2, p1 dan p2 tersebut digunakan sebagai
masukan untuk proses berikut yang akan dienkripsi dan menghasilkan p3
dan p4. Ulangi hingga proses p18 dan seluruh sbox selesai. Hasilnya
adalah Parray dan Sbox baru yang akan digunakan pada proses enkripsi
data.
243.
0X2BFDE310,
0XD4CB83C0,
0X32C388D9,
0XBC8305E8,
0X66E7E1AB,
0X5144565D}
244.
Sbox1={0X3E065A6D,
0X7CB69AB9,
0X11EE202D,
0XFB7F9F7E,.,
0X6F0BE7E2}
d. Sbox2={0X8CAEE8F6, 0XB5D9822B,, 0XF0AD0679}
e. Sbox3={0XC22242C5, 0XDDFB65A., 0X530F6666}
f. Sbox4={0X5061,F85F, 0X50BE3845,.,0X36673E75}
245.
2. Proses Enkripsi:
43
251. F = (S0,a + S1,b) mod 232 xor S2,c + S3,d mod 232
252.
253.
254.
f. Hitung:
255.
XR= XR xor F
256.
257.
kunci sesi yang didapat pengirim dan penerima email melalui pertukaran
kunci Diffie-Hellman menghasikan nilai yang sama atau tidak. Pengujian
terlihat seperti pada tabel berikut:
263.
264.
Ni
265.
N
266.
271.
N
Pengiri
m
272.
273.
Ni
K
267.
274.
Ni
Pengirim
275.
276.
Nil
Ku
268.
Perb
a
n
di
nn
g
a
n
K
u
n
ci
S
e
si
277.
Peng
iri
44
278.
1
279.
2
280.
7
288. 289.
7
1
281.
3
282.
2
290.
5
291.
6
283.
9
292.
5
284.
64
285.
25
293.
70
294.
61
299.
2
300.
1
308.
1
314.
1
298.
297. 2
5
307.
306. 8
5
315. 316.
1
8
301.
1
302.
29
303.
17
309.
3
310.
7
311.
21
312.
39
317.
8
318.
8
319.
2
320.
89
321.
83
323.
8
324. 325.
4
6
326.
6
327.
7
328.
7
329.
18
330.
70
332.
1
333. 334.
7
7
335.
9
336.
3
337.
1
338.
27
339.
34
341.
1
343.
342. 9
3
351.
7
352.
7
360. 361.
3
5
344.
9
345.
1
346.
9
347.
89
348.
13
353.
7
354.
4
355.
1
356.
48
357.
4
362.
1
363.
2
364.
2
365.
17
366.
24
287.
7
296.
8
305.
7
350.
1
359.
4
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
m
&
P
e
n
er
i
m
a
286.
Sam
a
295.
Sam
a
304.
Sam
a
313.
Sam
a
322.
Sam
a
331.
Sam
a
340.
Sam
a
349.
Sam
a
358.
Sam
a
367.
Sam
a
45
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
Penerima menghitung
B= gy mod P
= 209 mod 15767
= 512000000000 mod 15767
= 6438
Pengirim dan penerima melakukan pertukaran nilai A dan B
Pengirim menghitung
Ka= Bx mod P
= 64387 mod 15767
= 458412874690269123912465792 mod 15767
= 2579
Penerima menghitung
Kb= Ay mod P
= 34069 mod 15767
Kb= 61688156604543141426126788087296 mod 15767
= 2579
Ka = Kb = K = 2579
Pada sistem keamanan ini, pengirim hanya dapat
hash md5. Pengujian ini dilakukan untuk menguji keutuhan data (data
integrity) pada file yang telah dienkripsi dan didekripsi kembali.
398.
400.
399.
Nama
Fil
e
413.
Data
dir
i.t
xt
M
D5
Plainte
xt
Awal
401.
(A)
414.
5
15C96
D1DD
07DB9
84E24
D5
Cipher
text
403.
(
B)
415.
C
57AAC
9326D
39414
86B7B
404.
M
D5
Plainte
xt
Akhir
405.
(
C)
416.
5
15C96
D1DD
07DB9
84E24
406.
Per
bandinga
n
411.
A&
B
412.
A&
C
417.
Ber
b
e
d
418.
Sa
m
a
46
419.
Read
m
e.t
xt
425.
Lapor
an
PK
L.d
oc
x
431.
Lapor
an
Fin
al.
do
cx
437.
Conto
h
c5.
xls
443.
Fasilit
as.
xls
449.
Madri
d.j
pg
D5EF9
2DFE8
01
420.
5
CF262
25F18
120E1
90345
5F3CF
207A3
D
426.
4
C2017
630B2
7761B
2799E
93CD8
B7438
E
432.
A
49797
8C89E
C1914
996FB
52C46
A06F7
7
438.
8
99F2D
429C5
D9A75
356CE
E3EAB
F293C
0
444.
F
7B790
CFA78
F1F16
90113
28EBD
E010F
A
450.
3
915F3
29ED3
D3BD
C8DD0
CA3E7
1E7F5
6E1DB
8
421.
7
C9915
7CC1E
54F20
D7C85
FE291
A9FB8
9
427.
C
EC5D5
AFB69
C41A4
65A05
C98F6
90707
3
433.
E
6C38F
3F215
38877
0C783
270EC
0D4D7
7
439.
3
31AAD
1D41E
E1F29
0C1FC
CB7D0
026B5
C
445.
6
81EBF
8C704
03531
62739
01AF4
0CCC1
3
451.
9
70095
1E73E
81AC3
78081
EDF12
D5EF9
2DFE8
01
422.
5
CF262
25F18
120E1
90345
5F3CF
207A3
D
428.
4
C2017
630B2
7761B
2799E
93CD8
B7438
E
434.
A
49797
8C89E
C1914
996FB
52C46
A06F7
7
440.
8
99F2D
429C5
D9A75
356CE
E3EAB
F293C
0
446.
F
7B790
CFA78
F1F16
90113
28EBD
E010F
A
452.
3
915F3
29ED3
D3BD
C8DD0
CA3E7
a
423.
Ber
b
e
d
a
424.
Sa
m
a
429.
Ber
b
e
d
a
430.
Sa
m
a
435.
Ber
b
e
d
a
436.
Sa
m
a
441.
Ber
b
e
d
a
442.
Sa
m
a
447.
Ber
b
e
d
a
448.
Sa
m
a
453.
Ber
b
e
d
a
454.
Sa
m
a
47
455.
Pantai
.jp
g
02571
C2
456.
9
60D28
0D3D0
A090B
B9D26
21F25
ECFB8
4
0D22D
D
457.
C
F539F
6B618
2E9C0
E76F5
3D5F1
A4810
7
02571
C2
458.
9
60D28
0D3D0
A090B
B9D26
21F25
ECFB8
4
459.
Ber
b
e
d
a
460.
Sa
m
a
461.
462.
Avalanche Effect(AE) =
bit berubah
bit total
x100% , sehingga
48
472.
1111110000000100001000000011111000001101011000001111101
000000100001100000011011100000000000100000111001100001011010
000001111110100000100011000000011001100001000101000001100011
0000001111101
473.
Ciphertext 1 xor ciphertext 2:
474.
1110010100001001111000001110111100000111110000001101101
000001111001100001001111100000001000000001011000000000001110
000000001110100000100011000001110000100001110101100000000100
1100001000010
475.
Banyak bit yang berubah ( bit bernilai 1): 68
476.
Bit total: 128 bit
bit berubah
477.
Avalanche Effect(AE) =
bit total x 100%
68
128
478.
Avalanche Effect(AE) =
x 100%
479.
480.
= 53,13 %
Pengujian dilakukan pada sepuluh buah file, dimana setiap file
akan dienkripsi sebanyak dua kali menggunakan kunci pertama dan kunci
kedua yang merupakan hasil perubahan satu bit dari kunci pertama.
Adapun hasil pengujian adalah sebagai berikut:
481.
482.
Nama
File
488.
Blowf
ish.txt
494.
Data
diri.txt
500.
Conto
h c5.xls
506.
Fasilit
484.
Kun
c
i
2
485.
Bit
t
o
t
a
l
490.
1134
491.
128
492.
496.
3811
497.
1176
503.
9644
8
509.
498.
576
502.
7723
508.
486.
Bit
ber
ub
ah
68
504.
52744
510.
487.
Avalan
ch
e
Eff
ect
493.
53.13
%
499.
48.98
%
505.
54.69
%
511.
49
as.xls
512.
Lapor
an Final.docx
518.
Lapor
an PKL.docx
524.
Prese
ntasi
PKL.ppt
530.
Tugas
4.ppt
536.
Madri
d.jpg
542.
.jpg
Pantai
548.
rata
554.
Rata-
555.
646
7
9
513.
892
3
4
519.
673
8
3
525.
783
5
6
3
531.
346
7
8
1
537.
886
4
5
7
543.
823
6
4
9
549.
6466
9
8949
6
40784
45.57
%
514.
8963
4
515.
3928
516.
2088
517.
53.16
%
522.
2112
523.
49.16
%
528.
19476
00
529.
56.86
%
534.
38921
6
535.
49.65
%
540.
15031
60
541.
55.21
%
546.
47599
44
547.
53.72
%
552.
553.
52.01
%
520.
6738
7
526.
3835
6
3
532.
3467
8
3
521.
4296
527.
3425
2
0
0
544.
8336
4
9
533.
7839
0
4
539.
2722
7
4
4
545.
8859
9
2
0
550.
551.
538.
8864
4
7
effect yang dihasilkan dari sepuluh kali percobaan adalah berkisar dari
45,57% - 56,86%, dengan nilai rata-rata 52,01%. Hal ini meneunjukan
bahwa algoritma yang digunakan sudah cukup baik karena menghasilkan
nilai avalanche effect dalam rentang 45%-60%.
556.
557.
558.
BAB V
559.
5.1 Kesimpulan
560.
5.2 Saran
562.
3.
48
4. DAFTAR PUSTAKA
Alamsyah. 2011. Implementasi Keamanan E-Mail Dengan Menggunakan
Pgptray. Mektek Tahun XIII No 2. Palu
Gunawan. 2012. Penggunaan Algoritma Diffie-Hellman dalam Melakukan
Pertukaran Kunci. Bandung
Hendarsyah, D dan Retantyo, W. 2011. Implementasi Protokol Diffie-Hellman
Dan Algoritma RC4 Untuk Keamanan Pesan SMS. Yogyakarta
Heru; Irzaman; dan Andri, H. 2005. Implementasi Kriptografi Algoritma Blowfish
Dan Skipjack Pada Jaringan Client/Server. Bandung
Jafar, H, S. 2011. "Proposal to Complex DES Security Using Diffie Hellman
Injection". Baghdad
Mandal, P, C. 2011. "Superiority of Blowfish Algorithm". West Bengal
Mantoro, T dan Andri, Zakariya 2012. Securing E-Mail Communication Using
Hybrid Cryptosistem on Android-based Mobile Devices. Jakarta
Paar, C and Jan, Pelzl 2009. Understanding Cryptography. Bochum: Springer
Pachghare, V,K. (2009). Cryptography And Information Security. Delhi : Phi
Pamungkas, A.A. et al. 2006. Implementasi Algoritma Sistem Kriptografi MD5,
SHA1, dan RC4 Pada Aplikasi Mobile Internet Berbasis Java. Jurnal
Penelitian dan Pengembangan Telekomunikasi, Bandung
Ratih. 2006. "Studi Dan Implementasi Algoritma Blowfish Untuk Apliksi Enkripsi
Dan Dekripsi File". Bandung
Rizal M, S. 2009. "Implementasi algoritma kriptografi kunci publik ElGamal
untuk keamanan pengiriman Email". Surabaya
Schneier, Bruce. 1996. Applied Cryptography, Second Edition: Protokols,
Algorthms, and Source Code in C. John Wiley & Sons, Inc
Sofwan, A; Budi; dan Susanto 2006.Aplikasi Kriptografi Dengan Algoritma
Message Digest 5 (Md5). Semarang
Stallings, W. 2005.Cryptography and Network Security Principles and Practies
4th Edition.Pretince Hall.
Sulianta, F. 2010. IT Ergonomics. Jakarta: PT.Elex Media Komputindo
Sutanto C, A. 2009. "Penggunaan Algoritma Blowfish Dalam Kriptografi".
BandungThorsteinson, P, G and Gnana, Arun, Ganesh. 2003. .NET
Security and Cryptography. Prentice Hall PTR
Tilborg, H,C,A. 2000. Fundamentals Of Cryptology. Eindhoven: Kluwer
Academic Publishers
Yudhistira, T, A.; Idris W, S.ST, M.Kom; dan Kholid, F, S.Kom. (2011). Enkripsi
Email Dengan Menggunakan Metode Elgamal Pada Perangkat Mobile.
Surabaya
49
LAMPIRAN
System.Numerics
MySql.Data.MySqlClient.MySqlConnection
MySql.Data.MySqlClient
System.Data
randomValue = generator.Next(4, 6)
Dim ulang As String
ulang = ""
For i = 0 To randomValue
ulang = String.Concat(ulang, "", generator.Next(1,
9).ToString())
Next
Integer.TryParse(ulang, randomValue)
Label7.Text = ulang
Return randomValue
End Function
Private Function acak2() As Integer
Dim generator As New Random
Dim randomValue1 As Integer
randomValue1 = generator.Next(0, 3) '0 angka minimal dan
999999999 angka maksimal
Dim ulang As String
ulang = ""
For i = 0 To randomValue1
ulang = String.Concat(ulang, "", generator.Next(1,
9).ToString())
Next
Label8.Text = ulang
Integer.TryParse(ulang, randomValue1)
Return randomValue1
End Function
Else
i = 0
End If
Next i
End Sub
Private Sub AcakBil2()
Dim i As Integer
For i = 0 To 1
If Prima(acak2()) = True Then
TxtG.Text = Label8.Text
'A
i = 1
Else
i = 0
End If
Next
End Sub
Sub SimpanAcak()
If TxtG.Text = "" Or TxtP.Text = "" Then
MessageBox.Show("Cek Data Yang Masih Kosong",
"Validation Form", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation)
Else
konek("192.168.148.1", "root", "", "kunci")
Dim cmd As New MySql.Data.MySqlClient.MySqlCommand
cmd.CommandType = CommandType.Text
cmd.CommandText = "INSERT INTO tKunci
(`username`,`nilaiP`,`nilaiG`,`nilaiOrang`,`waktu`) VALUES ('" &
LblUser.Text _
& "','" & TxtP.Text _
& "','" & TxtG.Text _
& "','" & LblHasil.Text & "','" & Label5.Text & "'
)"
cmd.Connection = Conn
cmd.ExecuteScalar()
TampilData()
End If
End Sub
Private Sub hapus()
konek("192.168.148.1", "root", "", "kunci")
Dim cmd As New MySql.Data.MySqlClient.MySqlCommand
cmd.CommandType = CommandType.Text
cmd.CommandText = "DELETE FROM tKunci WHERE username = '"
& LblUser.Text & "'"
cmd.Connection = Conn
cmd.ExecuteScalar()
End Sub
Private Sub BtnHitungKunci_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
BtnHitungKunci.Click
HitungModulus(Val(TxtB.Text), Val(TextBox2.Text),
Val(TxtP.Text), Ka)
End Sub
Private Sub FormKunci_FormClosing(ByVal sender As Object,
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
Form1.boxPassword.Text = Ka.Text
con.Close()
End Sub
Private Sub FormKunci_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
TampilData()
DataKunci.ForeColor = Color.Blue
LblUser.Text = FormLogin.txtUser.Text
End Sub
Sub TampilData()
adapter = New MySqlDataAdapter("SELECT * FROM tKunci",
"server=192.168.148.1;user=root;password=;database=kunci")
table = New DataTable
adapter.Fill(table)
DataKunci.DataSource = table
DataKunci.Columns(0).Width = 80
DataKunci.Columns(1).Width = 80
DataKunci.Columns(2).Width = 80
DataKunci.Columns(3).Width = 80
DataKunci.Columns(4).Width = 160
End Sub
Private Sub BtnAcak_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BtnAcak.Click
Me.Cursor = Cursors.WaitCursor
AcakBil1()
AcakBil2()
hapus()
TampilData()
SimpanAcak()
Me.Cursor = Cursors.Hand
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles Button1.Click
HitungModulus(Val(TxtG.Text), Val(TextBox2.Text),
Val(TxtP.Text), LblHasil)
hapus()
TampilData()
SimpanAcak()
End Sub
Private Sub RdPengirim_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
RdPengirim.CheckedChanged
BtnAcak.Visible = True
TmrUpdate.Enabled = True
DataKunci.Enabled = False
TxtG.Enabled = True
TxtP.Enabled = True
TxtB.Enabled = True
End Sub
Private Sub RdPenerima_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
RdPenerima.CheckedChanged
BtnAcak.Visible = False
TmrUpdate.Enabled = True
DataKunci.Enabled = True
TxtG.Enabled = False
TxtP.Enabled = False
TxtB.Enabled = False
End Sub
outputFile.ShowDialog()
End Sub
Private Sub outputFile_FileOk(ByVal sender As System.Object,
ByVal e As System.ComponentModel.CancelEventArgs) Handles
outputFile.FileOk
boxOutputFile.Text = outputFile.FileName.ToString()
End Sub
Private Sub btnEncrypt_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnEncrypt.Click
'--------------------ListWaktu
ListHH.Items.Clear()
ListMM.Items.Clear()
ListSS.Items.Clear()
ListMS.Items.Clear()
inputWaktu()
If boxPassword.Text = "" Or boxOutputFile.Text = "" Then
MsgBox("Data Belum Lengkap !", vbInformation +
vbOKOnly, "Enkripsi")
Else
'=============Coding Menampilkan di texbox===========
inputWaktu()
TxtEditor.Text = ""
Dim inputan As String = boxInputFile.Text
Tampilkan(inputan, TxtEditor)
'mengubah kunci menjadi byte'
Dim byteConverter As Encoding = Encoding.UTF8
Dim key As Byte() =
byteConverter.GetBytes(boxPassword.Text)
Dim bf As New BlowFish(key)
'mengubah file inputan menjadi byte'
Dim datainput As Byte() =
File.ReadAllBytes(boxInputFile.Text)
Dim dataoutput = bf.Encrypt(datainput)
File.WriteAllBytes(boxOutputFile.Text, dataoutput)
'=============Coding Menampilkan di texbox===========
TxtEditorOut.Text = ""
Dim al As String = boxOutputFile.Text
Tampilkan(al, TxtEditorOut)
ComposeEmail.RichEditControl1.Text = TxtEditorOut.Text
btnEncrypt.Enabled = False
inputWaktu()
MsgBox("Proses Enkripsi Telah Selesai !",
vbInformation + vbOKOnly, "Enkripsi")
hitungWaktu(ListHH, ListMM, ListSS, ListMS, Label9)
End If
End Sub
Private Sub btnDecrypt_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnDecrypt.Click
'--------------------ListWaktu
ListHH.Items.Clear()
ListMM.Items.Clear()
ListSS.Items.Clear()
ListMS.Items.Clear()
inputWaktu()
If boxPassword.Text = "" Or boxOutputFile.Text = "" Then
MsgBox("Data Belum Lengkap !", vbInformation +
vbOKOnly, "Enkripsi")
Else
'=============Coding Menampilkan di texbox===========
inputWaktu()
TxtEditor.Text = ""
Dim inputan As String = boxInputFile.Text
Tampilkan(inputan, TxtEditor)
Dim byteConverter As Encoding = Encoding.UTF8
Dim key As Byte() =
byteConverter.GetBytes(boxPassword.Text)
Dim bf As New BlowFish(key)
Dim datainput As Byte() =
File.ReadAllBytes(boxInputFile.Text)
Dim dataoutput = bf.Decrypt(datainput)
File.WriteAllBytes(boxOutputFile.Text, dataoutput)
'=============Coding Menampilkan di texbox===========
TxtEditorOut.Text = ""
Dim al As String = boxOutputFile.Text
Tampilkan(al, TxtEditorOut)
btnDecrypt.Enabled = False
inputWaktu()
MsgBox("Proses Deskripsi Telah Selesai !",
vbInformation + vbOKOnly, "Deskripsi")
hitungWaktu(ListHH, ListMM, ListSS, ListMS, Label9)
End If
End Sub
Private Sub Tampilkan(ByVal alamat As String, ByVal txt As
TextBox)
Dim FileReader As StreamReader
FileReader = New StreamReader(alamat)
txt.Text = FileReader.ReadToEnd()
FileReader.Close()
End Sub
Private Sub TAnimation_Tick(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles TAnimation.Tick
Static TitleLength As Integer
TitleLength = TitleLength + 1
If TitleLength Mod 2 = 1 Then
Label7.ForeColor = Color.Yellow
Label6.ForeColor = Color.Red
Else
Label7.ForeColor = Color.Red
Label6.ForeColor = Color.Yellow
End If
If TitleLength = Title.Length() + 1 Then TitleLength = 0
Label7.Text = Title.Substring(0, TitleLength)
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Timer2.Tick
Label6.Text = "" & Now.Day & "-" & Now.Month & "-" &
Now.Year & " / " & Now.Hour & ":" & Now.Minute & ":" & Now.Second
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
LblUser.Text = FormLogin.txtUser.Text
End Sub
End Class
7. Class Blowfish
Public Class BlowFish
#Region "S AND P"
Private P As UInteger()
Private S As UInteger(,)
#End Region
Public Sub New(ByVal key As [Byte]())
P = TryCast(_P.Clone(), UInt32())
S = TryCast(_S.Clone(), UInt32(,))
'EKSPANSI KUNCI'
Dim keyIndex As Int32 = 0
Dim keyLength As Int32 = key.Length
For i As Int32 = 0 To P.Length - 1
Dim data As UInt32 = 0
For j As Int32 = 0 To 3
data = (data << 8) Or key(keyIndex)
keyIndex = (keyIndex + 1) Mod keyLength
Next
P(i) = P(i) Xor data
Next
S(i, j * 2) = dataL
S(i, j * 2 + 1) = dataR
Next
Next
End Sub
Public Function Encrypt(ByVal data As Byte()) As Byte()
'Cara untuk melakukan enkripsi adalah sebagai berikut:
'************LANGKAH KE 1*****************
Dim padLength As Byte = CByte(8 - (data.Length Mod 8))
ReDim Preserve data(data.Length + padLength - 1)
data(data.Length - 1) = padLength
Dim i As Int32 = 0
While i < data.Length 'membaca tiap 8 karakter (tiap block
= 64 bit) dari panjang data file masukan'
'************LANGKAH KE 2*****************
Dim xL As UInt32 = ((CType(data(i), UInt32) << 24) Or
(CType(data(i + 1), UInt32) << 16) Or (CType(data(i + 2), UInt32)
<< 8) Or CType(data(i + 3), UInt32))
Dim xR As UInt32 = ((CType(data(i + 4), UInt32) << 24)
Or (CType(data(i + 5), UInt32) << 16) Or (CType(data(i + 6),
UInt32) << 8) Or CType(data(i + 7), UInt32))
1))
1))
1))
1))
End If
Dim i As Int32 = 0
While i < data.Length
Dim xL As UInt32 = ((CType(data(i), UInt32) << 24) Or
(CType(data(i + 1), UInt32) << 16) Or (CType(data(i + 2), UInt32)
<< 8) Or CType(data(i + 3), UInt32))
1))
1))
1))
1)
= CUShort((x
>>= 8
= CUShort((x
>>= 8
= CUShort((x
>>= 8
= CUShort((x
And &HFF))
And &HFF))
And &HFF))
And &HFF))
End Sub
Private Sub Encipher(ByRef xL As UInt32, ByRef xR As UInt32)
'************LANGKAH KE 3*****************
Dim xL_1 As UInt32 = xR
Dim xR_1 As UInt32 = xL
For i As Int32 = 0 To P.Length - 2 - 1
swap(xL_1, xR_1)
xL_1 = xL_1 Xor P(i)
xR_1 = F(xL_1) Xor xR_1
Next
'************LANGKAH KE 4*****************
xR = xR_1 Xor P(P.Length - 2)
xL = xL_1 Xor P(P.Length - 1)
End Sub
Private Sub Decipher(ByRef xL As UInt32, ByRef xR As UInt32)
Dim xL_1 As UInt32 = xR
Dim xR_1 As UInt32 = xL
For i As Int32 = P.Length - 1 To 2 Step -1
swap(xL_1, xR_1)
xL_1 = xL_1 Xor P(i)
xR_1 = F(xL_1) Xor xR_1
Next
xR = xR_1 Xor P(1)
xL = xL_1 Xor P(0)
End Sub
End Class