Anda di halaman 1dari 77

IMPLEMENTASI KEAMANAN EMAIL MENGGUNAKAN

PERTUKARAN KUNCI DIFFIEHELLMAN DAN ALGORITMA


ENKRIPSI BLOWFISH

KOMPETENSI JARINGAN KOMPUTER

SKRIPSI

RAE A.P. HERE WOLLO


NIM. 0908605054

PROGRAM STUDI TEKNIK INFORMATIKA


JURUSAN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS UDAYANA
JIMBARAN
2014

Judul
Nama
Nim

: Implementasi Keamanan Email Menggunakan Pertukaran


Kunci Diffie-Hellman Dan Algoritma Enkripsi Blowfish
: Rae Arya Pangestu Here Wollo
: 0908605054

Jurusan

: Jurusan Ilmu Komputer, Fakultas Matematika dan Ilmu


Pengetahuan Alam, Universitas Udayana
Pembimbing : 1. I Komang Ari Mogi, S.Kom, M.Kom.
2. I Dewa Made Bayu Atmaja Darmawan, S.Kom, M.Cs.
ABSTRAK
Electronic mail (email) adalah suatu sistem komunikasi elektronik yang saat ini
dipakai untuk melakukan komunikasi 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 dibangun aplikasi mail client yang didalamnya diterapkan
algoritma Blowfish yaitu salah satu algoritma simetris block cipher untuk melakukan
enkripsi dan dekripsi pada attachment email. Pada aplikasi ini juga diterapkan protokol
pertukaran kunci Diffie-Hellman untuk pengamanan distribusi kunci sesi yang akan
digunakan pada proses enkripsi-dekripsi.
Berdasarkan penelitian, penerapan protokol Diffie-Hellman dan algoritma
Blowfish dapat diimplementasikan dengan baik, yang ditunjukan dengan kesesuaian
kunci yang dihasilkan pengirim dan penerima, pengujian enkripsi-dekripsi yang berjalan
dengan baik, dan terjaganya keutuhan data. Berdasarkan pengujian, algoritma Blowfish
yang diterapkan dalam sistem keamanan email ini memiliki tingkat keamanan yang baik,
yaitu dengan syarat memiliki nilai Avalanche Effect antara 45%-60%. Hasil pengujian
Avalanche Effect terhadap perubahan bit kunci menghasilkan nilai rata-rata 52,01% dari
sepuluh kali percobaan, dengan nilai terkecil yang didapat adalah 45,57% dan nilai
terbesar adalah 56,86%.
Kata Kunci : Email, Kriptografi, Blowfish, Diffie-Hellman, Avalanche Effect

Title

: Implementasi Keamanan Email Menggunakan Pertukaran


Kunci Diffie-Hellman Dan Algoritma Enkripsi Blowfish
Name
: Rae Arya Pangestu Here Wollo
Student Number : 0908605054
Supervisor

: 1. I Komang Ari Mogi, S.Kom, M.Kom.


2. I Dewa Made Bayu Atmaja Darmawan, S.Kom, M.Cs.

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

penulis, antara lain :


1. Bapak Drs. I Wayan Santiyasa, M.Si selaku Ketua Jurusan Ilmu Komputer
Fakultas MIPA Universitas Udayana.
2. Bapak I Komang Ari Mogi. sebagai Dosen Pembimbing I.
3. Bapak I Dewa Made Bayu Atmaja Darmawan,S.Kom.,M.Cs. sebagai
Pembimbing II.

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

3.1 Analisis Kebutuhan......................................................................................17


3.2 Perancangan Sistem......................................................................................18
3.2.1 Data Flow Diagram (DFD)....................................................................18
3.2.2 Flowchart...............................................................................................20
BAB IV..................................................................................................................24
HASIL DAN PEMBAHASAN..............................................................................24
4.1. Lingkungan Perancangan dan Implementasi...............................................24
4.2 Implementasi Algoritma Diffie-Hellman ke Dalam Sistem.........................24
4.3 Implementasi Algoritma Blowfish ke Dalam Sistem...................................25
4.4 Tampilan Antarmuka Pengguna...................................................................26
4.5 Pengujian Implementasi Sistem...................................................................32
4.5.1 Pengujian Hasil Enkripsi-Dekripsi........................................................32
4.5.2 Pengujian Hasil Kunci...........................................................................43
4.5.3 Pengujian Keutuhan Data......................................................................45
4.6 Pengujian Avalanche Effect..........................................................................46
BAB V....................................................................................................................48
KESIMPULAN DAN SARAN..............................................................................48
5.1 Kesimpulan...................................................................................................48
5.2 Saran.............................................................................................................48
DAFTAR PUSTAKA.............................................................................................49
LAMPIRAN...........................................................................................................50

DAFTAR TABEL

Tabel 1.1 Tabel Pengujian Kunci Sesi......................................................................5


Tabel 4.1 Pengujian Hasil Kunci............................................................................43
Tabel 4.2 Pengujian Keutuhan Data.......................................................................45
Tabel 4.3 Pengujian Avalanche Effect...................................................................47

DAFTAR GAMBAR

Gambar 2.1 Proses Enkripsi -Dekripsi.....................................................................7


Gambar 2.2 Protokol Pertukaran Kunci Diffie Hellman.....................................10
Gambar 2.3 Jaringan Feistel Algoritma Blowfish..................................................13
Gambar 2.4 Fungsi F Pada Algoritma Blowfish....................................................14
Gambar 3.1 Skema Sistem.....................................................................................18
Gambar 3.2 DFD Level 0.......................................................................................19
Gambar 3.3 DFD Level 1.......................................................................................19
Gambar 3.2 Flowchart Sistem...............................................................................20
Gambar 3.3 Flowchart Pertukaran Kunci DH Pada Pengirim...............................22
Gambar 3.4 Flowchart Pertukaran Kunci DH Pada Penerima..............................22
Gambar 3.5 Flowchart Enkripsi-Dekripsi Blowfish..............................................23
Gambar 4.1 Tampilan Form Login........................................................................27
Gambar 4.2 Tampilan Form Utama Mail Client....................................................27
Gambar 4.3 Tampilan Form Key............................................................................28
Gambar 4.4 Tampilan Form Buat Pesan................................................................28
Gambar 4.5 Tampilan Form Add Attachment........................................................29
Gambar 4.6 Tampilan Dialog Box Enkripsi Pesan................................................29
Gambar 4.7 Tampilan Form Dekripsi....................................................................30
Gambar 4.8 Tampilan Form Baca Pesan................................................................30
Gambar 4.9 Tampilan form download attachment.................................................31
Gambar 4.10 Tampilan Dialog Box Enkripsi.........................................................31
Gambar 4.11 Tampilan Form Dekripsi..................................................................31
Gambar 4.12 Plain Text1.txt..................................................................................32
Gambar 4.13 Text1.txt setelah dienkripsi..............................................................33
Gambar 4.14 Hexadesimal Plaintext Text1.txt......................................................33
Gambar 4.15 Hexadesimal Ciphertext Text1.txt....................................................33
Gambar 4.16 Data diri.txt setelah didekripsi.........................................................34
Gambar 4.17 Plaintext Laporan Final.docx...........................................................34

10

Gambar 4.18 Laporan Final.docx setelah dienkripsi.............................................35


Gambar 4.19 Hexadesimal Plaintext Laporan Final.docx.....................................35
Gambar 4.20 Hexadesimal Ciphertext Laporan Final.docx...................................35
Gambar 4.21 Laporan Final.docx setelah didekripsi.............................................36
Gambar 4.22 Plaintext Presentasi PKL.ppt...........................................................36
Gambar 4.23 Presentasi PKL.ppt setelah dienkripsi..............................................36
Gambar 4.24 Hexadesimal Plaintext Presentasi PKL.ppt.....................................37
Gambar 4.25 Hexadesimal Ciphertext Presentasi PKL.ppt...................................37
Gambar 4.26 Presentasi PKL.ppt setelah didekripsi..............................................37
Gambar 4.27 Plaintext Contoh c5.xls....................................................................38
Gambar 4.28 Contoh c5.xls setelah dienkripsi......................................................38
Gambar 4.29 Hexadesimal Plaintext Contoh C5...................................................39
Gambar 4.30 Hexadesimal Ciphertext Contoh C5................................................39
Gambar 4.31 Contoh c5.xls setelah didekripsi......................................................39
Gambar 4.32 Plaintext Logo Madrid.jpg...............................................................40
Gambar 4.33 Logo Madrid.jpg setelah dienkripsi.................................................40
Gambar 4.34 Hexadesimal Plaintext Madrid.jpg..................................................40
Gambar 4.35 Hexadesimal Ciphertext Madrid.jpg................................................41
Gambar 4.36 Logo Madrid.jpg setelah didekripsi.................................................41

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

perhitungan exponensial pada domain yang sama. (Stallings, 2005).


Penelitian terkait yang pernah dilakukan antara lain:
1. Penelitian berjudul Studi Dan Implementasi Algoritma Blowfish Untuk
Apliksi Enkripsi Dan Dekripsi Fileoleh Ratih pada tahun 2006 dimana
didapat kesimpulan bahwa Blowfish merupakan salah satu solusi yang baik
untuk mengatasi masalah keamanan dan kerahasiaan data yang pada
umumnya diterapkan dalam saluran komunikasi dan file.
2. Penelitian berjudul Penggunaan Algoritma Diffie-Hellman dalam Melakukan
Pertukaran Kunci oleh Gunawan pada tahun 2011 dimana didapat
kesimpulan bahwa Penggunaan Algoritma Diffie-Hellman dalam pertukaran
kunci dapat dilakukan secara aman dan efektif dalam pemrosesan jika
dibandingkan dengan algoritma RSA yang cenderung lebih lama dalam
pemrosesan algoritmanya.
Berdasarkan latar belakang di atas, pada penelitian ini akan dibangun
suatu sistem untuk mengamankan email menggunakan algoritma enkripsi
Blowfish dan menggunakan algoritma Diffie-Hellman dalam melakukan
pertukaran kuncinya. Hal ini diharapkan untuk menjaga keamanan data email
menggunakan proses enkripsi-dekripsi, dan juga keamanan pendistribusian kunci
untuk melakukan enkripsi-dekripsi tersebut.
1.2 Rumusan Masalah
Berdasarkan latar belakang di atas, masalah yang akan dibahas adalah :
1. Apakah proses pertukaran kunci menggunakan metode Diffie-Hellman dapat
digunakan untuk mengamankan kunci enkripsi dekripsi Blowfish yang
digunakan untuk keamanan email?
2. Apakah algoritma Blowfish dapat diterapkan untuk mengamankan data pada
email?

1.3 Tujuan
Adapun tujuan Penelitian ini adalah sebagai berikut:

1. Untuk menguji apakah implementasi algoritma Diffie-Hellman dan algoritma


blowfish pada aplikasi mail client telah sesuai dengan harapan penulis
2. Menguji tingkat keamanan algoritma Blowfish yang diterapkan pada sistem
keamanan email menggunakan pengujian avalanche effect pada perubahan
kunci.
1.4 Batasan Masalah
Batasan Masalah pada penelitian ini adalah sebagai berikut:
1. Penelitian ini menggunakan jaringan lokal dengan sebuah komputer sebagai
server dan tiga buah komputer client
2. Proses pertukaran kunci serta proses enkripsi dan dekripsi dilakukan pada sisi
client
3. Penelitian ini dilakukan pada attachment email yang berbentuk file teks
(.txt) ,office (.docx, .ppt, .xls), dan image (.jpg)
4. Penelitian ini tidak memperhitungkan besar traffic jaringannya.
1.5 Manfaat
Manfaat dari penelitian ini adalah untuk mengamankan kerahasiaan isi
email dari pihak lain yang tidak berhak.
1.6 Metodologi Penelitian
Metodologi penelitian ini mencakup perancangan sistem yang dan
pengujian sistem Adapun perancangan sistem berisikan data flow diagram (DFD)
dan juga diagram alir (flowchart) yang berfungsi untuk menjadi pedoman
pembuatan aplikasi sistem keamanan email. Sedangkan pengujian system
berfungsi untuk menguji apakah system yang dibuat telah sesuai dengan yang
diharapkan.
1.6.1 Perancangan Sistem
Untuk melakukan perancangan sistem ini maka diperlukan data flow
diagram sebagai berikut:
1. DFD level 0 : Menggambarkan aliran data dari sistem secara umum
2. DFD level 1 : Menggambarkan aliran data dari masing-masing proses yang
ada
Selain menggunakan DFD, dalam perancangan sistem ini juga diperlukan
beberapa buah flowchart antara lain sebagai berikut:

1. Flowchart Sistem : Flowchart ini akan menggambarkan alur kerja secara


umum dari sistem keamanan email yang akan dibuat
2. Flowchart Pertukaran Kunci Diffie Hellman : Flowchart ini akan
menggambarkan alur kerja dari protokol pertukaran kunci Diffie Hellman
untuk menghasilkan kunci sesi.
3. Flowchart Enkripsi-Dekripsi : Flowchart ini akan menggambarkan alur kerja
dari proses enkripsi dan dekripsi menggunakan algoritma Blowfish
1.6.2 Pengujian Sistem
Pengujian pada penelitian ini terdiri dari pengujian terhadap kunci sesi
yang dihasilkan, pengujian hasil enkripsi-dekripsi, dan pengujian keutuhan pesan
(Data integrity),
1.6.1.1 Pengujian Kunci Sesi
Menguji hasil pertukaran kunci yang menggunakan protokol pertukaran
kunci Diffie Hellman, apakah

dengan kunci yang dipertukarkan akan

menghasilkan kunci sesi yang sama. Pengujian dilakukan dengan melakukan


langkah - langkah berikut:
1. Pengirim mengirimkan kunci publiknya kepada penerima
2. Pengirim dan penerima masing masing menghitung nilai yang berasal
dari kunci publik dan kunci privatnya masing masing.
3. Pengirim dan penerima akan saling bertukar nilai yang didapat
4. Nilai yang didapat akan diolah kembali oleh masing masing pihak untuk
mendapatkan kunci sesi
5. Masukan kunci sesi yang didapat oleh penerima dan pengirim ke dalam
tabel pengujian kunci sesi untuk dibandingkan. Tabel akan dibuat seperti
berikut:
Tabel 1.1 Tabel Pengujian Kunci Sesi
Kunci Sesi Pengirim

Kunci Sesi Penerima

Hasil Perbandingan
(sama / tidak sama)

1.6.1.2 Pengujian Enkripsi-Dekripsi


Pengujian enkripsi-dekripsi bertujuan untuk menguji apakah hasil enkripsi
dan dekripsi telah sesaui dengan yang diharapkan, yaitu proses enkripsi yang
menghasilkan ciphertext yang tidak dapat dibaca dan hasil dekripsi yang dapat
kembali seperti file aslinya. Pengujian dilakukan dengan langkah langkah
sebagai berikut:
1. Pengirim memasukan file asli (plaintext) yang akan dikirim melalui email
2. Pengirim melakukan enkripsi menggunakan kunci sesi yang telah
didapatkannya
3. Pengirim mengirimkan email yang berisikan pesan file yang telah
dienkripsi kepada penerima.
4. Penerima menerima email yang dikirimkan
5. Penerima melakukan dekripsi terhadap file pesan yang telah diterima.
6. Pesan sebelum dan setelah dienkripsi akan ditampilkan untuk melihat
apakah pesan telah terenkripsi dengan baik sehingga tidak dapat dibaca
jika tidak melakukan dekripsi terhadap pesan tersebut.
1.6.1.3 Pengujian Keutuhan Data
Pengujian keutuhan data dilakukan menggunakan fungsi hash md5.
Pengujian ini dilakukan untuk menguji keutuhan data (data integrity) pada file
yang telah dienkripsi dan didekripsi kembali.
1.6.3 Pengujian Avalanche Effect
Pengujian avalanche effect dilakukan untuk menguji algoritma blowfish
yang digunakan pada sistem keamanan email ini. 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 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

Gambar 2.1 Proses Enkripsi -Dekripsi


(Scheiner,1996)

Tujuan penggunaan kriptografi adalah dalam menjaga keamanan data


dalam aspek- aspek berikut :
1. Confidentiality (kerahasiaan) : Menjaga isi informasi agar hanya dapat dilihat
oleh pihak yang berhak.
2. Data integrity (integritas data) : Menjamin keaslian data selama pengiriman.
3. Authentication (otentikasi) : Mengidentifikasi kebenaran pihak-pihak yang
berkomunikasi (userauthentication) dan mengidentifikasi kebenaran sumber
pesan (data originauthentication) (Tilborg, 2000).
4. Non-repudiation (penyangkalan): Mencegah entitas yang berkomunikasi
melakukan penyangkalan, sehingga pengirim pesan tidak dapat menyangkal
telah melakukan pengiriman pesan atau penerima pesan tidak dapat
menyangkal telah menerima pesan. (Hendarsyah dan Wardoyo 2011)
Jenis algoritma berdasarkan kuncinya dibagi atas : Algoritma simetri dan
algoritma asimetri. Algoritma simetri menggunakan satu kunci rahasia yang sama
sama digunakan untuk proses enkripsi dan dekripsi. Sedangkan metode dengan
kunci asimetris menggunakan dua kunci yang berbeda yaitu public key yang
digunakan oleh pengirim untuk melakukan enkripsi dan satu private key yang
digunakan untuk mendekripsikan pesan. Contoh algoritma asimetris adalah DES,
AES, RC4, Blowfish, dan lain- lain, sedangkan algoritma asimetris contohnya
RSA, Elgamal, Diffie Hellman, dan lain lain (Stallings, 2005)
2.2 Pertukaran Kunci DIffie Hellman
Pertukaran kunci Diffie Hellman (DH), diusulkan oleh Whitfield Diffie
dan Martin Hellman pada tahun 1976, adalah skema algoritma asimetris yang
pertama kali diterbitkan dalam literatur terbuka.Penemuan ini juga dipengaruhi
oleh karya Ralph Merkle.Pertukaran kunci ini memberikan solusi praktis untuk
masalah distribusi kunci, yaitu, memungkinkan dua pihak untuk mendapatkan
kunci rahasia dengan berkomunikasi melalui saluran tidak aman (Paar C, 2009)
Kita dapat memberikan public key ke manapun tujuan yang kita inginkan, melalui
telepon, internet, keyserver, dan sebagainya. (alamsyah, 2011). Kunci rahasia yang
telah didistribusikan kemudian digunakan untuk enkripsi dan dekripsi.Fungsi
algoritma ini sendiri terbatas pada pertukaran nilai rahasia. (Stallings, 2005)

Algoritma Diffie-Hellman tergantung untuk efektivitas pada kesulitan


menghitung logaritma diskrit.(Stalling, 2005) Cara kerja dari algoritma ini adalah
sebagai berikut:
1. Sepakati sebuah bilangan prima yang besar, yaitu p. Lalu pilih bilangan
integer yang tidak melebihi dari nilai p, yaitu g, yang biasa disebut bilangan
basis atau generator. Kedua bilangan tersebut dapat diketahui secara publik.
2. Pengirim memilih sebuah bilangan acak, x, bilangan ini tidak boleh diketahui
oleh pihak lain.
3. Pengirim memilih sebuah bilangan acak, y, bilangan ini tidak boleh diketahui
oleh pihak lain.
4. Pengirim menghitung A = gx mod p. Bilangan A ini dapat diketahui secara
publik.
5. Penerima menghitung B = gy mod p. Bilangan B ini dapat diketahui secara
publik.
6. Pengirim memberikan nilai A kepada penerima, dan sebaliknya penerima
memberikan nilai B kepada pengirim.
7. Pengirim menghitung Ka = Bx mod p.
8. Penerima menghitung Kb = Ay mod p.
Berdasarkan hukum aljabar nilai Kasama dengan Kbatau bisa disebut:
Ka = Kb = K.
Nilai K adalah kunci yang akan digunakan pada proses enkripsi dan dekripsi.
Pembuktian Ka = Kb = K :
Ka= Kb
Bx mod p = Ay mod p
(gy mod p)x mod p = (gx mod p)y mod p
(gy)x mod p = (gx)y mod p
gyx mod p = gxy mod p
Untuk lebih jelasnya protokol pertukaran kunci Diffie Hellman ditunjukan pada
bagan berikut:

10

Gambar 2.2 Protokol Pertukaran Kunci Diffie Hellman


(Stallings,2005)
Keamanan dari Diffie-Hellman pertukaran kunci terletak pada kenyataan
bahwa, relatif mudah untuk menghitung eksponensial modulo prima, sementara
itu sangat sulit untuk menghitung logaritma diskrit. Hal tersebut akan bertambah
sulit jika dipilih bilangan prima yang besar. (Stallings, 2005)
Algoritma ini tidak hanya terbatas pada 2 pengguna saja. Jumlah pengguna
yang ingin menggunakan pertukaran kunci menggunakan algoritma DiffieHellman ini tidak dibatasi. Hal ini hanya berlaku jika memenuhi 2 prinsip yang
harus dilakukan:
1. Bilangan p dan g yang telah disetujui oleh semua anggota.
2. Setiap anggota harus melakukan pertukaran data yang diperlukan oleh anggota
lainnya sehingga semua data dapat didapatkan secara merata: gabc.n (Gunawan
M, 2012)
Penggunaan Algoritma Diffie-Hellman dalam pertukaran kunci dapat
dilakukan secara aman dan efektif dalam pemrosesan jika dibandingkan dengan
algoritma RSA yang cenderung lebih lama dalam pemrosesan algoritmanya.
Algoritma Diffie-Hellman lebih memfokuskan dalam perubahan nilai kunci dan
proses matematis dalam penentuan kunci akhir yang sama. Sedangkan Algoritma
RSA lebih memfokuskan pada saat enkripsi dan dekripsi. (Gunawan M, 2012)
Algoritma simetri seperti DES dan juga Blowfish mempunyai kelemahan
yaitu jika kunci dapat disadap maka pesan dapat dipecahkan. Algoritma DiffieHellman hanya berfungsi untuk melakukan generate terhadap kunci sehingga

11

membutuhkan algoritma enkripsi untuk lebih mengamankannya. Menggunakan


perpaduan algoritma simetri dan Diffie Hellmann akan membuat keamanan
yang lebih kuat. (Jafar, 2011)
2.3 Algoritma Blowfish
Blowfish merupakan algoritma simetri yang tergolong dalam metode
block cipher. Ada dua tipe dasar algoritma simetris: block cipher dan stream
cipher. Sebuah block cipher memproses block byte (biasanya 64 atau 128 bit)
pada satu waktu. Sebuah stream cipher memproses satu byte atau bahkan satu bit
pada suatu waktu. (Thorsteinson and Ganesh, 2003)
Blowfish dibuat oleh seorang Cryptanalyst bernama Bruce Schneier, yang
merupakan

Presiden

perusahaan

Counterpane

Internet

Security.Inc,

dandipublikasikan tahun 1994. Algoritma ini digunakan pada komputer yang


mempunyai microprocessorbesar (32-bit keatas dengan cache data yang besar).
(Schneier, 1996)
Karateristik Blowfish adalah sebagai berikut:
1. Merupakan block cipher dengan 64 bit block
2. Panjang kunci merupakan variable dengan panjang kunci hingga 448 bit
3. Mengenkripsi data pada microprocessor 32 bit dengan rata rata 18 clock
cycle per byte, lebih cepat dari DES dan IDEA.
4. Tidak mempunyai hak paten dengan harga yang gratis.
5. Dapat berjalan pada memori kurang dari 5 K.
6. Mempunyai struktur yang sederhana dan implementasi yang mudah.
(Pachghare, 2009)
Blowfish terdiri atas dua bagian :
1. Key-Expansion
Berfungsi merubah kunci (Minimum 32-bit, Maksimum 448-bit) menjadi
beberapa array subkunci (subkey) dengan total 4168 byte.
2. Enkripsi Data
Terdiri dari iterasi fungsi sederhana (Feistel Network) sebanyak 16 kali
putaran.Setiap putaran terdiri dari permutasi kuncidependent dan substitusi
kunci dan data dependent.Semua operasi adalah penambahan (addition) dan
XOR pada variabel 32-bit.Operasi tambahan lainnya hanyalah empat

12

penelusuran tabel (table lookup) array berindeks untuk setiap putaran.


(Schneier, 1996)
Blowfish menggunakan subkunci yang besar.Kunci tersebut harus dihitung
sebelum enkripsi atau dekripsi data.
1. Bentuk inisial P-array sebanyak 18 buah (P1,P2,..P18) masingmsing bernilai 32-bit. Array P terdiri dari delapan belas kunci 32-bit subkunci:
P1,P2,.,P18
2. Bentuk S-box sebanyak 4 buah masing-masing bernilai 32-bit yang memiliki
masukan 256. Empat 32-bit S-box masing-masing mempunyai 256 entri :
S1,0,S1,1,..,S1,255
S2,0,S2,1,..,S2,255
S3,0,S3,1,..,S3,255
S4,0,S4,1,..,S4,255
Blowfish adalah sebuah jaringan Feistel yang terdiri dari 16 putaran.
Inputannya adalah elemen data 64 bit. Cara untuk melakukan enkripsi adalah
sebagai berikut:
1. Pertama - tama plaintext yang akan dienkripsi diasumsikan sebagai masukan,
plain text

tersebut diambil sebanyak 64-bit, dan apabila kurang dari 64-bit

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

Gambar 2.3 Jaringan Feistel Algoritma Blowfish


(Scheiner 1996)
Fungsi F adalah sebagai berikut:
Bagi XL menjadi empat bagian 8-bit:
a,b,c dan d. F(XL) = ((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232.

Gambar 2.4 Fungsi F Pada Algoritma Blowfish

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

Belumada cara untuk mengecek weak key sebelum melakukankey expansion,


tetapi hal ini tidak berpengaruh terhadaphasil enkripsi. Hasil enkripsi dengan
algoritma Blowfish sangat tidak mungkin dan tidak praktis untuk di terjemahkan
tanpabantuan kunci. (Sutanto, 2009)
Blowfish merupakan salah satu solusi yang baik untuk mengatasi masalah
keamanan dan kerahasiaan data yang pada umumnya diterapkan dalam saluran
komunikasi dan file. Algoritma Blowfish dapat diimplementasikan dengan bahasa
apapun (selain C) namun harus disesuaikan cara penulisan maupun tipe-tipe
datanya. (Ratih, 2006)
2.4 Electronic Mail (Email)
Electronic mail atau yang sering disingkat email merupakan aplikasi
TCP/IP yang saat ini banyak digunakan. Surat elektronik sudah mulai dipakai di
tahun 1960-an. Pada saat itu Internet belum terbentuk, yang ada hanyalah
kumpulan mainframe yang terbentuk sebagai jaringan. Mulai tahun 1980-an, surat
elektronik sudah bisa dinikmati oleh khalayak umum.Email adalah pesan yang
terdiri atas kumpulan string ASCII dalam format RFC 822 yang dikembangkan
thn 1982. (Yudhistira, 2011; Syaiful, 2010)
Protokol yang biasanya digunakan pada email adalah Simple Mail
Transfer Protokol (SMTP), Post Office Protokol 3 (POP3), dan Internet Message
Access Protokol (IMAP). Protokol yang digunakan untuk mengirim email adalah
SMTP, sedangkan protokol yang digunakan untuk mengunduh email adalah POP3
dan IMAP. (Mantoro ,2012)
Proses

enkripsi

memperlambatpengiriman

email.

Namun

tidakmenggannggu, karena email tidak membutuhkan waktu yang real time


seperti chatting.(Rizal, 2009)
2.5 Fungsi Hash MD-5
Fungsi hash satu arah memiliki banyak nama yaitu: fungsi pembanding,
fungsi penyusutan, intisari pesan, sidik jari, message integrity check (MIC) atau
pemeriksa keutuhan pesan dan manipulation detection code (MDC) atau
pendektesi penyelewengan kode (Scheiner, 1996 )

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

4. Untuk lebih jelasnya gambaran sistem akan ditunjukan melalui skema


berikut ini:
5.

6. Gambar 3.1 Skema Sistem

19

7.

Pada gambar ditunjukan sebuah komputer server dan tiga

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.

Adapun perancangan sistem terdiri dari perancangan Data

Flow Diagram (DFD) dan juga Flowchart yang akan dijelaskan sebagai
berikut:
11. 3.2.1 Data Flow Diagram (DFD)
12.

DFD level 0 menunjukan diagram alir data dari sistem yang

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.

DFD Level 1 membagi sistem menjadi beberapa proses

yang lebih khusus, dimana terdapat 4 proses utama yaitu: pertukaran


kunci, enkripsi email, dekripsi email, dan pengiriman email. Masing
masing proses berhubungan satu sama lain dan juga mempunyai data

20

masukan dan keluarannya masing masing. DFD level 1 sistem


ditunjukan pada gambar berikut:

16.
17. Gambar 3.3 DFD Level 1
18. 3.2.2 Flowchart
19.

Flowchart merupakan sebuah diagram yang menyatakan

aliran algoritma atau proses beserta urutannya dengan menghubungkan


masing masing langkah tersebut. Flowchart yang dibuat pada penelitian
ini antara lain adalah flowchart sistem, flowchart Diffie-Hellman, dan
flowchart Blowfish.
20.
Secara umum, sistem dimulai dari proses pertukaran kunci
Diffie-Hellman untuk mendapatkan nilai kunci sesi yang akan digunakan
pada proses enkripsi-dekripsi. Setelah kunci didapatkan, maka pengirim
akan melakukan enkripsi terhadap file yang selanjutnya akan dikirim
melalui email. Setelah email sampai kepada penerima, penerima harus
melakukan dekripsi terhadap file tersebut agar dapat kembali menjadi
plaintext. Langkah-langkah tersebut ditunjukan pada flowchart sistem
berikut:

21

21.
22. Gambar 3.2 Flowchart Sistem
23.

Pada protokol pertukaran kunci Diffie-Hellman langkah

pertama yang harus dilakukan adalah pengirim mengacak sebuah nilai


prima yang besar (p) dan sebuah bilangan integer sebagai basis (g) dimana
nilai g < p. Nilai p dan g ini bersifat publik dengan kata lain boleh
diketahui oleh pihak lain. Niali ini akan disimpan ke database key
sehingga nilai p dan g tersebut dapat dipakai juga oleh penerima.
Selanjutnya pengirim dan penerima akan memasukan nilai privatnya
masing-masing dimana nilai privat pengirim disebut x dan nilai privat dari
penerima adalah y. Selanjutnya, masing-masing menghitung nilai yang
akan dipertukarkan, dimana pengirim menghitung A = g

mod p

sedangkan penerima menghitung B = g y mod p.Selanjutnya pengirim dan


penerima memasukan nilainya masing-masing yaitu A dan B ke database
agar dapat saling bertukar nilai tersebut. Pengirim lalu menghitung Ka= B x

22

mod p sedangkan penerima menghitung Kb= Ay mod p, dimana Ka = Kb =


K adalah kunci sesi yang akan digunakan dalam proses enkripsi-dekripsi.
Alur proses pertukaran kunci Diffie-Hellman tersebut digambarkan dalam
flowchart berikut:

24.
25. Gambar 3.3 Flowchart Pertukaran Kunci DH Pada Pengirim

23

26.
27. Gambar 3.4 Flowchart Pertukaran Kunci DH Pada Penerima
28.

Setelah kunci sesi didapatkan maka proses enkripsi-dekripsi

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.

36. Gambar 3.5 Flowchart Enkripsi-Dekripsi Blowfish

37. BAB IV
38. HASIL DAN PEMBAHASAN
39. 4.1. Lingkungan Perancangan dan Implementasi
40.

Pengimplementasian sistem kemanan email yang dibangun

mencakup perangkat keras dan perangkat lunak. Spesifikasi perangkat


keras yang digunakan adalah sebagai berikut :
1. Processor AMD Vision 1,6 GHz
2. Memory 2048 MB RAM
3. Hardisk 250 GB
41. Sedangkan untuk spesifikasi dari perangkat lunak adalah sebagai berikut :
1. Sistem operasi Windows 7 Enterprise 32 Bit.
2. Microsoft Visual Studio 2010
3. XAMPP yang didalamnya berisi Mercury mail server dan database Mysql
42. 4.2 Implementasi Algoritma Diffie-Hellman ke Dalam Sistem
43.

Dalam

sistem ini akan diterapkan algoritma Diffie-

Helmann sebagai protokol pertukaran kunci. Adapun implementasinya


adalah sebagai berikut:
44. 1. Proses pengacakan nilai prima p dan bilangan basis g
45. Adapun pengacakan nilai p dan g pada program adalah sebagai berikut:
46.
47.
48.
49.
50.

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.

Untuk melakukan protokol pertukaran kunci Diffie-

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.

hasil = BigInteger.ModPow(nilai, eks, modulus)


Tempathasil.Text = hasil.ToString

94.

Selain nilai p dan g, nilai yang dibutuhkan adalah nilai A

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.

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
xR = xR_1 Xor P(P.Length - 2)
xL = xL_1 Xor P(P.Length - 1)

107.

Setelah kunci yang didapat diekspansi dengan p-box dan s-

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.

Proses dekripsi memiliki langkah yang hampir sama

dengan proses enkripsi, perbedaanya terletak pada urutan iterasi yang


dimulai dari p18. Data masukan juga dibagi menjadi blok-blok byte, yang
kemudian akan didekripsi. Setelah itu blok-blok tersebut disatukan
kembali menjadi plaintext yang utuh.
122.

4.4 Tampilan Antarmuka Pengguna


123.

Untuk tampilan antarmuka pengguna sistem ini dibuat

berbasis desktop dengan menggunakan bahasa pemrograman VB.Net.


124.
1. Tampilan Antarmuka Form Login
125.
Form login adalah form pertama yang ditampilkan saat
program dijalankan. Pada form ini, user yang telah didaftarkan oleh admin

27

ke dalam mail server harus memasukan username dan passwordnya untuk


dapat mengakses akun emailnya.

126.
127.
128.
129.

Gambar 4.1 Tampilan Form Login

2. Tampilan Antarmuka Form Utama Mail Client


Setelah user berhasil melakukan login, maka akan

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.

Gambar 4.2 Tampilan Form Utama Mail Client

3. Tampilan Antarmuka Form Pembentukan Kunci


133. Sebelum melakukan pengiriman dan penerimaan email

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

melakukan perhitungan nilai A dan B yang akan dipertukarkan dengan


menekan tombol hitung. Pada form ini juga akan ditampilkan tabel
database yang berisi nilai-nilai yang digunakan untuk protokol pertukaran
kunci DH ini. Setelah itu pengirim dan penerima juga harus menekan
tombol hitung kunci untuk mendapatkan nilai kunci sesi yang akan
digunakan dalam melakukan enkripsi-dekripsi.

134.
135.
136.

Gambar 4.3 Tampilan Form Key

4. Tampilan Antarmuka Form Buat Pesan


137. Setelah pertukaran kunci selesai dan masing-masing user

mendapatkan kunci sesinya, maka selanjutnya akan masuk ke form buat


pesan. Pada form ini pengirim harus memasukan alamat email penerima
dan juga subject emailnya. Lalu pengirim dapat menuliskan pesan di text
box yang disediakan dan mengunggah file attachment yang akan dikirim.
Saat akan mengunggah, pengirim akan diberikan pilihan untuk
mengenkripsi terlebih dahulu file attachmentnya atau tidak, yang mana
jika memilih yes maka akan masuk ke form enkripsi, sedangkan jika
tidak maka pengirim dapat langsung menekan tombol send untuk
mengirim pesan

29

138.
139.

Gambar 4.4 Tampilan Form Buat Pesan

140.
141.

Gambar 4.5 Tampilan Form Add Attachment

142.
143.
144.

Gambar 4.6 Tampilan Dialog Box Enkripsi Pesan

5. Tampilan Form Enkripsi


145. Pada form ini akan ditampilkan file yang akan dienkripsi

dan juga kunci yang akan digunakan. Jika ingin mengganti file yang akan

30

dienkripsi, maka pengirim menekan tombol folder untuk mencari file


yang akan dienkripsi. Setelah itu pengirim harus menekan tombol
enkripsi untuk melakukan proses enkripsi pada file tersebut.

146.
147.
148.

Gambar 4.7 Tampilan Form Dekripsi

6. Tampilan File Baca Pesan


149. Setelah penerima mendapatkan email yang dikirim, maka

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.

Gambar 4.8 Tampilan Form Baca Pesan

31

152.
153.

Gambar 4.9 Tampilan form download attachment

154.
155.
156.
157.

Gambar 4.10 Tampilan Dialog Box Enkripsi

7. Tampilan Antarmuka Form Dekripsi


Pada form ini ditampilkan file yang akan didekripsi dan

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.

Gambar 4.11 Tampilan Form Dekripsi

160.

4.5 Pengujian Implementasi Sistem

161.

4.5.1 Pengujian Hasil Enkripsi-Dekripsi


162.

Pengujian hasil enkripsi-dekripsi dilakukan untuk menguji

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.

1. Pengujian pada file Text1.txt

164.
165.
166.

Gambar 4.12 Plain Text1.txt

Gambar di atas menunjukan plaintext berupa file teks (.txt)

sebelum dienkripsi menampilkan isi file yang dapat dibaca.

33

167.
168.
169.

Gambar 4.13 Text1.txt setelah dienkripsi

Setelah dilakukan enkripsi, file teks tersebut menghasilkan

karakter-karakter acak yang tidak dapat dibaca.

170.
171.
172.

Gambar 4.14 Hexadesimal Plaintext Text1.txt

Dari gambar terlihat bahwa plaintext awal mempunyai nilai

hexadesima yaitu 52616520417261

34

173.
174.
175. Setelah

Gambar 4.15 Hexadesimal Ciphertext Text1.txt


dienkripsi,

nilai

hexadecimal

file

berubah

menjadi

7C53D8219B006DABC3A8E000D261CF3E
176.

177.
178.
179.

Gambar 4.16 Data diri.txt setelah didekripsi


Setelah dilakukan dekripsi terhadap ciphertext tersebut, file

tersebut kembali seperti semula, yaitu plaintext yang dapat dibaca seperti
sebelum dienkripsi.
180.

2. Pengujian pada file Laporan Final.docx

35

181.
182.
183.

Gambar 4.17 Plaintext Laporan Final.docx

Gambar di atas menunjukan plaintext berupa file word (.doc)

sebelum dienkripsi menampilkan isi file yang dapat dibaca.

184.
185.
186.

Gambar 4.18 Laporan Final.docx setelah dienkripsi

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.

Gambar 4.19 Hexadesimal Plaintext Laporan Final.docx

189.
190.
191.

Gambar 4.20 Hexadesimal Ciphertext Laporan Final.docx


Berdasarkan gambar di atas terlihat bahwa bagian awal yang

merupakan nilai hexadecimal dari ekstensi file telah berubah.

192.
193.

Gambar 4.21 Laporan Final.docx setelah didekripsi

194.
Setelah dilakukan dekripsi maka file kembali dapat dibuka dan
dapat dibaca isinya.
195.

3. Pengujian pada file Presentasi PKL.ppt

196.

37

197.
198.

Gambar 4.22 Plaintext Presentasi PKL.ppt

Gambar di atas menunjukan plaintext berupa file powerpoint (.ppt)

sebelum dienkripsi menampilkan isi file yang dapat dibaca.

199.
200.
201.

Gambar 4.23 Presentasi PKL.ppt setelah dienkripsi

Setelah dilakukan enkripsi file tersebut tidak dapat dibuka. Hal ini

terjadi karena nilai ekstensi file tersebut juga ikut berubah saat dilakukan
enkripsi.

202.
203.

Gambar 4.24 Hexadesimal Plaintext Presentasi PKL.ppt

204.
205.

Gambar 4.25 Hexadesimal Ciphertext Presentasi PKL.ppt

38

206.

Berdasarkan gambar di atas terlihat bahwa bagian awal yang

merupakan nilai hexadecimal dari ekstensi file telah berubah.

207.
208.

Gambar 4.26 Presentasi PKL.ppt setelah didekripsi

209.
Setelah dilakukan dekripsi maka file kembali dapat dibuka dan
dapat dibaca isinya.
210.

4. Pengujian file Contoh c5.xls

211.
212.
213.

Gambar 4.27 Plaintext Contoh c5.xls

Gambar di atas menunjukan plaintext berupa file powerpoint (.ppt)

sebelum dienkripsi menampilkan isi file yang dapat dibaca.

214.

39

215.
216.

Gambar 4.28 Contoh c5.xls setelah dienkripsi

Setelah dilakukan enkripsi file tersebut tidak dapat dibuka. Hal ini

terjadi karena nilai ekstensi file tersebut juga ikut berubah saat dilakukan
enkripsi.

217.
218.

Gambar 4.29 Hexadesimal Plaintext Contoh C5

219.
220.
221.

Gambar 4.30 Hexadesimal Ciphertext Contoh C5

Berdasarkan gambar di atas terlihat bahwa bagian awal yang

merupakan nilai hexadecimal dari ekstensi file telah berubah.

222.

40

223.

Gambar 4.31 Contoh c5.xls setelah didekripsi

224.
Setelah dilakukan dekripsi maka file kembali dapat dibuka dan
dapat dibaca isinya.
225.

5. Pengujian file logo Madrid.jpg

226.
227.
228.

Gambar 4.32 Plaintext Logo Madrid.jpg

Gambar di atas menunjukan plaintext berupa file image (.jpg)

sebelum dienkripsi menampilkan isi file yang dapat dibuka

229.
230.
231.

Gambar 4.33 Logo Madrid.jpg setelah dienkripsi

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.

Gambar 4.34 Hexadesimal Plaintext Madrid.jpg

234.
235.
236.

Gambar 4.35 Hexadesimal Ciphertext Madrid.jpg

Berdasarkan gambar di atas terlihat bahwa bagian awal yang

merupakan nilai hexadecimal dari ekstensi file telah berubah.

237.
238.
239.

Gambar 4.36 Logo Madrid.jpg setelah didekripsi

Setelah dilakukan dekripsi maka file kembali dapat dibuka.

240.
Berikut merupakan contoh perhitungan enkripsi Blowfish
pada file test.txt dengan menggunakan kunci 1234 :

42

241.

1. Ekspansi kunci

a. Kunci = 1234 nilai Hexadesimalnya adalah 0x31323334


b. Lakukan Xor pada kunci dengan masing-masing P array yang dideklarasi
di awal, menghasilkan:
242.
P={0X150D59BC, 0XB4913BE7, 0X222BB91A, 0X32424070,
0X953B0B16,

0X18AD02E4,

0X391CC9AC,

0XDD7C5FBD,

0X741A12D2,0X 9E22043, 0X8F6655FB, 0X5DB3F58, 0XF19E1A83,


0XF84E63E9,

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.

P={0XFE89A174,0X B27C20B7, 0X3384072B, 0X6EACB0DF,

0X2BFDE310,

0XD4CB83C0,

0X32C388D9,

0XBC8305E8,

0X7EAFA805, 0X92351224, 0X55917E58, 0X7F374F68, 0XD7040AF7,


0XFABB8E73,

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:

a. Plaintext: Rae Arya nilai Hexadesimalnya adalah 0x7261652061727961


b. Bagi plaintext menjadi dua bagian yaitu XL dan XR:
246.
XL=0x72616520
247.
XR=0x61727961
c. Hitung:
248.
XL = XR xor P1
249.
250.

= 0x72616520 Xor 0XFE89A174


= 0X8CE8C454

d. Bagi XL menjadi 4 yaitu: a=0x8C, b=0xE8, c=0xC4, d=0x54


e. Masukan ke dalam fungsi :

43

251. F = (S0,a + S1,b) mod 232 xor S2,c + S3,d mod 232
252.
253.

254.

= (S0,140 + S1,232) mod 232 xor S2,196 + S3,84 mod 2


= (0XDECC7A53 + 0X64294EE4) mod 232 xor 0X17770ECB5 +

0X7D73575E mod 232


= 0X17DFFD75E

f. Hitung:
255.
XR= XR xor F
256.
257.

= 0x61727961 xor 0X17DFFD75E


= 0X11C8DAE3F

g. Tukarkan XL dan XR lalu kembali ke proses c, lakukan sebanyak 16 kali.


h. Lakukan:
258. XR = XR xor p17
259. XR = XL Xor P18
i. Proses terakhir satukan kembali menjadi ciphertext yaitu:
260. 0X7C53D8219B006DABC3A8E000D261CF3E
261.

4.5.2 Pengujian Hasil Kunci


262.

Pengujian hasil kunci dilakukan untuk menguji apakah

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

Tabel 4.1 Pengujian Hasil Kunci

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.

Berikut merupkan contoh perhitungan Diffie-Hellman:


Nilai Publik p=1576 dan g=20
Nilai privat pengirim x=7
Nilai privat penerima y=9
Pengirim menghitung
A= gx mod P
= 207 mod 15767
= 1280000000 mod 15767
= 3406

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

melakukan enkripsi setelah pengirim dan penerima telah bertukar nilai A


dan B dan telah mendapatkan hasil kunci sesinya masing masing. Hal ini
berarti bahwa jika salah satu user belum tidak aktif saat melakukan
pertukaran kunci, maka pengirim tidak dapat melakukan enkripsi karena
belum ada kunci yang dapat digunakan.
396.

4.5.3 Pengujian Keutuhan Data


397. Pengujian keutuhan data dilakukan menggunakan fungsi

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

Tabel 4.2 Pengujian Keutuhan Data


402.

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.

Dari tabel di atas, terlihat bahwa pengujian md5 file asli

dengan file telah dienkripsi menghasilkan nilai yang berbeda, namun


setelah didekripsi, file akan menghasilkan nilai md5 yang sama dengan
plaintext awalnya. Hal ini menunjukan bahwa file tersebut tetap utuh
setelah proses enkripsi-dekripsi.
463.

4.6 Pengujian Avalanche Effect


464.

Pengujian Avalanche Effect digunakan untuk menguji

algoritma blowfish. Pengujian ini dilakukan dengan cara mengenkripsi file


dengan sebuah kunci untuk menghasilkan ciphertext pertama. Setelah itu
file yang sama dienkripsi lagi menggunakan kunci awal yang telah diubah
sebanyak 1 bit. File ciphertext pertama dan kedua akan dibandingkan
menggunakan rumus:
465.

Avalanche Effect(AE) =

bit berubah
bit total

x100% , sehingga

didapatkan nilai avalanche effectnya. Berikut merupakan contoh


perhitungan nilai avalanche effect:
466.
Plaintext : Blowfish
467.
Kunci pertama: 1234
468.
Ciphertext pertama dalam biner:
469.
000110010000110111000000110100010000101010100000001000
000000101100000000101010000000000100010000110000110000101010
000000111000000000000000000000110100100000011000010000110011
11000000111110
470.
Kunci kedua : 1134
471.
Ciphertext kedua dalam biner:

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

Tabel 4.3 Pengujian Avalanche Effect


483.
Ku
n
c
i
1
489.
123
4
495.
389
1
501.
672
3
507.

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

Berdasarkan tabel di atas terlihat bahwa rentang nilai avalanche

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

KESIMPULAN DAN SARAN

559.

5.1 Kesimpulan

560.

Berdasarkan penelitian yang telah dilakukan, penulis mendapat

kesimpulan sebagai berikut:


1. Implementasi pertukaran kunci Diffie-Hellman dan algoritma Blowfish pada
sistem kemanan email telah sesuai dengan analisis kebutuhan. Hal ini
ditunjukan dengan hasil pengujian enkripsi-dekripsi yang menunjukan bahwa
file dapat terenkripsi dengan baik sehingga menghasilkan file yang teracak,
dan dapat diekripsi kembali menjadi seperti semula. Selain itu, pengujian
kunci sesi menunjukan proses pertukaran kunci dapat menghasilkan nilai
kunci sesi yang sama. Pengujian keutuhan pesan menunjukan bahwa, file
sebelum dienkripsi dan setelah didekripsi menghasilkan nilai md5 yang sama,
yang menunjukan bahwa file tersebut tetap utuh setelah didekripsi.
2. Algoritma blowfish yang diterapkan dalam sistem keamanan email ini
memiliki tingkat keamanan yang baik, yaitu dengan syarat memiliki nilai
Avalanche Effect antara 45-60%. Hasil pengujian Avalanche Effect terhadap
perubahan kunci menghasilkan nilai rata-rata 52,01% dari sepuluh kali
percobaan, dengan nilai terkecil yang didapat adalah 45,57% dan nilai terbesar
adalah 56,86%.
561.

5.2 Saran

562.

Saran yang dapat diberikan oleh penulis untuk pengembangan

lebih lanjut adalah:


1. Proses enkripsi-dekripsi dilakukan pada server sehingga user tidak perlu
melakukan enkripsi-dekripsi.
2. Pembuatan sistem keamanan email berbasis web dan android.

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

1. Source Code Implementasi Diffie-Hellman


Imports
Imports
Imports
Imports

System.Numerics
MySql.Data.MySqlClient.MySqlConnection
MySql.Data.MySqlClient
System.Data

Public Class FormKunci


Dim adapter As MySqlDataAdapter
Dim table As DataTable
Private Sub HitungModulus(ByVal g As BigInteger, ByVal x As
BigInteger, _
ByVal p As BigInteger, ByVal
Tempathasil As Label)
Dim hasil As BigInteger
hasil = BigInteger.ModPow(g, x, p)
Tempathasil.Text = hasil.ToString
End Sub
Private
Dim
Dim
Dim

Function acak1() As Integer


generator As New Random
randomValue As BigInteger
nilai As BigInteger

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

Private Function Prima(ByVal Angka As BigInteger) As Boolean


Dim i As BigInteger
Dim tanda As Boolean = False
Dim cek As BigInteger
cek = 0
If Angka = 1 Then
tanda = False
ElseIf Angka = 2 Then
tanda = True
ElseIf Angka > 2 Then
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 'A
i = 1

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

Private Sub TmrUpdate_Tick(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles TmrUpdate.Tick
TampilData()
Label5.Text = "" & Now.Day & "-" & Now.Month & "-" &
Now.Year & " / " & Now.Hour & ":" & Now.Minute & ":" & Now.Second
End Sub
Private Sub DataKunci_CellContentClick(ByVal sender As
System.Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
DataKunci.CellContentClick
TxtG.Text = DataKunci.CurrentRow.Cells(2).Value()
TxtP.Text = DataKunci.CurrentRow.Cells(1).Value()
TxtB.Text = DataKunci.CurrentRow.Cells(3).Value()
End Sub
Private Sub DataKunci_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles DataKunci.Click
TxtG.Text = DataKunci.CurrentRow.Cells(2).Value()
TxtP.Text = DataKunci.CurrentRow.Cells(1).Value()
TxtB.Text = DataKunci.CurrentRow.Cells(3).Value()
End Sub
End Class

2. Source Code Implementasi Blowfish


Imports Microsoft.Win32
Imports System.Text
Imports System.IO
Public Class Form1
Private Sub inputWaktu()
'--------------------ListWaktu
ListHH.Items.Add(Now.Hour)
ListMM.Items.Add(Now.Minute)
ListSS.Items.Add(Now.Second)
ListMS.Items.Add(Now.Millisecond)
'---------------------------End Sub
Private Sub hitungWaktu(ByVal jam As ListBox, ByVal menit As
ListBox, ByVal detik As ListBox, ByVal mmdetik As ListBox, ByVal
sel As Label)
On Error Resume Next
Dim jamAwal, menitAwal, detikAwal, milidetikAwal As
Integer
Dim jamAkhir, menitAkhir, detikAkhir, milidetikAkhir As
Integer
Dim detikAkhirBaru, menitAkhirBaru, jamAkhirBaru As
Integer
Dim selJam, selMenit, selDetik, selMilidetik As Integer
jamAwal = jam.Items.Item(0) 'waktuAwal()
menitAwal = menit.Items.Item(0) 'waktuAwal()

detikAwal = detik.Items.Item(0) 'waktuAwal()


milidetikAwal = mmdetik.Items.Item(0) 'waktuAwal()
jamAkhir = jam.Items.Item(jam.Items.Count - 1)
'waktuAkhir()
menitAkhir = menit.Items.Item(menit.Items.Count - 1)
'waktuAkhir()
detikAkhir = detik.Items.Item(detik.Items.Count - 1)
'waktuAkhir()
milidetikAkhir = mmdetik.Items.Item(mmdetik.Items.Count 1) 'waktuAkhir()
If milidetikAkhir >= milidetikAwal Then
selMilidetik = milidetikAkhir - milidetikAwal
detikAkhirBaru = detikAkhir
Else
selMilidetik = 1000 + milidetikAkhir - milidetikAwal
detikAkhirBaru = detikAkhir - 1
End If
If detikAkhirBaru >= detikAwal Then
selDetik = detikAkhirBaru - detikAwal
menitAkhirBaru = menitAkhir
Else
selDetik = 60 + detikAkhirBaru - detikAwal
menitAkhirBaru = menitAkhir - 1
End If
If menitAkhirBaru >= menitAwal Then
selMenit = menitAkhirBaru - menitAwal
jamAkhirBaru = jamAkhir
Else
selMenit = 60 + menitAkhirBaru - menitAwal
jamAkhirBaru = jamAkhir - 1
End If
If jamAkhirBaru >= jamAwal Then
selJam = jamAkhirBaru - jamAwal
Else
selJam = 24 + jamAkhirBaru - jamAwal
End If
sel.Text = "" & selJam & ":" & selMenit & ":" & selDetik &
":" & selMilidetik
End Sub
Private Sub inputFile_FileOk(ByVal sender As System.Object,
ByVal e As System.ComponentModel.CancelEventArgs) Handles
inputFile.FileOk
boxInputFile.Text = inputFile.FileName.ToString()
End Sub
Private Sub btnSelectFileOutput_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
btnSelectFileOutput.Click
outputFile.Title = "Save as Text"
outputFile.InitialDirectory = "C:temp"
'tinggal ganti aja file yang mau di filter yang mana
outputFile.Filter = ".txt|*.txt"

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

Dim dataL As UInt32 = 0


Dim dataR As UInt32 = 0
For i As Int32 = 0 To P.Length / 2 - 1
Encipher(dataL, dataR)
P(i * 2) = dataL
P(i * 2 + 1) = dataR
Next
For i As Int32 = 0 To S.GetLength(0) - 1
For j As Int32 = 0 To S.GetLength(1) / 2 - 1
Encipher(dataL, dataR)

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))

'************LANGKAH KE 3 DAN 4*****************


Encipher(xL, xR)
'************LANGKAH KE 5*****************
data(i + 0) = CByte((xL >> 24) Mod (Byte.MaxValue +
data(i + 1) = CByte((xL >> 16) Mod (Byte.MaxValue +

1))

1))

data(i + 2) = CByte((xL >> 8) Mod (Byte.MaxValue + 1))


data(i + 3) = CByte((xL >> 0) Mod (Byte.MaxValue + 1))
data(i + 4) = CByte((xR >> 24) Mod (Byte.MaxValue +
data(i + 5) = CByte((xR >> 16) Mod (Byte.MaxValue +

1))

data(i + 6) = CByte((xR >> 8) Mod (Byte.MaxValue + 1))


data(i + 7) = CByte((xR >> 0) Mod (Byte.MaxValue + 1))
i += 8
End While
Return data
End Function
Public Function Decrypt(ByVal data As Byte()) As Byte()
If (data.Length Mod 8) <> 0 Then
Throw New Exception("Data Length must be multiple of
8.")

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))

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))
Decipher(xL, xR)
data(i + 0) = CByte((xL >> 24) Mod (Byte.MaxValue +
1))

data(i + 1) = CByte((xL >> 16) Mod (Byte.MaxValue +

1))

data(i + 2) = CByte((xL >> 8) Mod (Byte.MaxValue + 1))


data(i + 3) = CByte((xL >> 0) Mod (Byte.MaxValue + 1))
data(i + 4) = CByte((xR >> 24) Mod (Byte.MaxValue +

1))
1))

1)

data(i + 5) = CByte((xR >> 16) Mod (Byte.MaxValue +


data(i + 6) = CByte((xR >> 8) Mod (Byte.MaxValue + 1))
data(i + 7) = CByte((xR >> 0) Mod (Byte.MaxValue + 1))
i += 8
End While
ReDim Preserve data(data.Length - data(data.Length - 1) Return data
End Function
Private Function F(ByVal x As UInteger) As UInteger
Dim a As UShort
Dim b As UShort
Dim c As UShort
Dim d As UShort
Dim y As UInt64
d
x
c
x
b
x
a

= CUShort((x
>>= 8
= CUShort((x
>>= 8
= CUShort((x
>>= 8
= CUShort((x

And &HFF))
And &HFF))
And &HFF))
And &HFF))

y = CType(S(0, a), UInt64) + S(1, b)


y = y Mod (UInt32.MaxValue + 1)
y = y Xor S(2, c)
y = y + S(3, d)
y = y Mod (UInt32.MaxValue + 1)
Return CType(y, UInt32)
End Function
Private Shared Sub swap(ByRef x As UInt32, ByRef y As UInt32)
'************SWAP = TUKAR X MENJADI Y*****************
x = x Xor y
y = y Xor x
x = x Xor y

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

Anda mungkin juga menyukai