implementasi enkripsi dan dekripsi dokumen …
TRANSCRIPT
IMPLEMENTASI ENKRIPSI DAN DEKRIPSI DOKUMEN
MENGGUNAKAN ALGORITMA GOST
SKRIPSI
Disusun Oleh :
Heni Pratiwi
NIM : 035314012
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2007
2
IMPLEMENTASI ENKRIPSI DAN DEKRIPSI DOKUMEN
MENGGUNAKAN ALGORITMA GOST
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Jurusan Teknik Informatika
Disusun Oleh :
Heni Pratiwi
NIM : 035314012
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2007
3
IMPLEMENTATION OF DOCUMENTS ENCRYPTION AND
DECRYPTION USING GOST ALGORITHM
A THESIS
Presented as Partial Fulfillment of the Requirements
to Obtain the Sarjana Teknik Degree
in Department of Informatics Technology
Created by:
Heni Pratiwi
NIM : 035314012
DEPARTMENT OF INFORMATICS TECHNOLOGY
FACULTY OF ENGINEERING
SANATA DHARMA UNIVERSITY
YOGYAKARTA2007
4
5
6
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak
memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam
kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, 23 April 2007
Penulis
Heni Pratiwi
7
Halaman Persembahan
Skripsi ini kupersembahkan untuk :
Tuhan Yesus-ku sumber kekuatan dan sumber segalanya
yang selalu memberkati dan menyertaiku.
Bapak dan Ibuku, ungkapan rasa hormat, cinta
dan baktiku
Kakak - kakakku yang selalu mendukungku dan
mendoakanku
Dosen dosenku yang telah memberikan ilmu pengetahuan
pada saya
Teman-temanku yang selalu membantu dan
menyemangatiku
Kekasih hatiku, sumber semangat dan pendamping setiaku
8
Halaman Motto
Dekatkan dirimu kepada Tuhan dan serahkanlah segala
kekuatiran, kebencian, dan ketakutanmu. Ia pasti
memeliharamu. (1 Petrus 5:6-7).
Kerjakanlah sesuatu secara tulus dan wajar, dan
segalanya akan baik. Kesempurnaan terletak pada
motivasi kerja, bukan pada pekerjaan. (Guru Ching Hai).
Kesengsaraan menimbulkan ketekunan, dan ketekunan
menimbulkan tahan uji, dan tahan uji menimbulkan pengharapan.
(Roma 5:3-4).
9
IMPLEMENTASI ENKRIPSI DAN DEKRIPSI DOKUMENMENGGUNAKAN ALGORITMA GOST
Heni Pratiwi035314012
ABSTRAKSI
Jika ada data penting yang harus dilindungi kerahasiaannya, makadiperlukan suatu teknik untuk mengamankan data tersebut. Salah satu teknik yangdigunakan yaitu dengan melakukan enkripsi. Enkripsi adalah teknik pengkodeandata oleh algoritma tertentu yang membuat data tidak bisa dibaca oleh programapa saja tanpa kunci decryption. Enkripsi juga dapat digunakan untuk melakukanproteksi pada saat data ditransmisikan melalui jalur komunikasi. Salah satu teknikenkripsi yang digunakan adalah symmetric encryption, yaitu menggunakan kunciyang sama untuk proses enkripsi dan dekripsi. Kunci simetris (symmetricencryption) yang digunakan merupakan kesepakatan antara pengirim danpenerima pesan.
Dalam tugas akhir ini akan menggunakan Algoritma Gost. Algoritma initermasuk dalam symmetric encryption. Algoritma ini dapat mengkodekan isiberkas dokumen asli dalam kode-kode tertentu agar tidak bisa dibaca orang lainyang tidak berhak. Algoritma ini merupakan blok cipher 64 bit dengan panjangkunci 256 bit. Pada tugas akhir ini akan menggunakan bahasa pemrogramanDelphi. Dalam tugas akhir ini akan mencari kecepatan proses dan rerata rasioketiga tipe berkas (.txt,.doc,.rtf). Berkas dokumen yang digunakan untuk uji cobaberjumlah enam buah dengan berbagai ukuran.
Percobaan dilakukan sebanyak tiga kali untuk masing-masing berkas, laludiambil rata-rata waktunya. Kemudian dari rata-rata waktu tersebut dapat dihitungrerata waktu dan rerata rasio untuk ketiga tipe berkas. Hasil percobaanmenunjukkan bahwa semakin besar ukuran berkas maka semakin lama pula waktuprosesnya.
10
IMPLEMENTATION OF DOCUMENTS ENCRYPTION ANDDECRYPTION USING GOST ALGORITHM
Heni Pratiwi035314012
ABSTRACT
If any important data that must be protect, then it will be need sometechnique to save the data. One of technique is encryption. Encryption is datacoding of some algorithm which can make the data unreadable without decryptionkey. Encryption also can protect the data when its transferred in communicationnetwork. One of techniques of encryption is symmetric encryption, which usingthe same key for encryption and decryption processing. But first, sender andreceiver have a deal for the key that used for this encryption.
On this final project will use Gost Algorithm. This algorithm include insymmetric encryption. This algorithm can make some code in original documentswhich can not read for someone else who don’t have right. This algorithm have 64cipher block with key length 256 bit. This final project will use Delphiprogramming language. On this final project will looking for the speed of timeand rasio average between three type of documents (.txt,.doc,.rtf). There are sixdocuments that used on this project with various size.
There are three times for testing for each documents, then get the timeaverage. After that, it can use to calculate the time average and ratio average forthe three type of documents. The result of testing show that the bigger the size ofdocuments the longer the time.
11
KATA PENGANTAR
Puji syukur penulis haturkan kepada Tuhan Yang Maha Esa atas segala
karunia dan berkat yang diberikan, sehingga penulis dapat menyelesaikan skripsi
yang berjudul “IMPLEMENTASI ENKRIPSI DAN DEKRIPSI DOKUMEN
MENGGUNAKAN ALGORITMA GOST” ini dengan baik. Penulisan skripsi ini
merupakan salah satu syarat untuk memperoleh gelar Sarjana Teknik pada
Program Studi Teknik Informatika di Universitas Sanata Dharma.
Selama penulisan skripsi ini penulis telah memperoleh bantuan dan
bimbingan dari berbagai pihak. Oleh karena itu penulis mengucapkan terima kasih
kepada:
1. Ibu A.M. Polina, selaku Ketua Jurusan Teknik Informatika Universitas Sanata
Dharma.
2. Bapak Eko Hari Parmadi selaku dosen pembimbing yang telah banyak
membantu dan membimbing selama penulis mengerjakan tugas akhir ini.
3. Ibu Rita Widiarti dan Bapak Joko Nugroho yang telah memberikan banyak
masukan dan bimbingannya.
4. Bapakku Hadrianus Muryono, Ibuku Margareta Sugiyati, serta kedua
kakakku, Antonius Dwi Murdiyanto dan Agustinus Rinto Sukarno, yang telah
memberikan dorongan baik moril maupun materiil, dan yang selalu
menyemangatiku serta mendoakanku.
5. Mas Fadhal yang telah memberikan banyak latihan dan masukan, juga
terimakasih atas testing programnya.
12
6. Teman-teman terbaikku : Ratih Maharani ”Pigem”, Marcellia Kusuma”,
Kristina Novita Dewi, Antonia Isti Wijayanti. Thanks to be my best friend.
7. Teman-teman TI : Teeka (TI’03), Onezzt (TI’03), Ako (TI’03), Ina (TI’03),
Yansen (TI’03), Monik (TI’03), Mas Radith (TI’02), Mas Meganz (TI’02),
Andhika (TI’02), dan teman-teman lainnya, thanks a lot guys .
8. Teman-teman Alumni SMUN 9: Winda, Narti, Puspa, Dita, Ganjur, Dimas,
Feri, dan teman-teman lainnya atas dukungan serta doanya.
9. My Soulmate : Paulinus Prihnugroho Dwi Yulianto (Alumni TI’00). Terima
kasih atas segala rasa cinta dan kasih sayang yang kamu berikan. I Love You.
10. Semua pihak yang tidak dapat penulis sebutkan satu persatu, yang telah
memberikan dukungan serta bantuannya guna penyusunan skripsi ini
Penulis menyadari sepenuhnya bahwa Tugas Akhir ini masih jauh dari
kesempurnaan dan masih banyak kekurangan. Oleh karena itu penulis sangat
mengharapkan kritik dan saran yang bersifat membangun demi perbaikan lebih
lanjut. Penulis berharap semoga Tugas Akhir ini dapat bermanfaat bagi pembaca.
Yogyakarta, 23 April 2007
Penulis
13
DAFTAR ISI
HALAMAN JUDUL ................................................................................... i
HALAMAN PERSETUJUAN ................................................................... iii
HALAMAN PENGESAHAN .................................................................... iv
HALAMAN PERNYATAAN KEASLIAN KARYA.................................. v
HALAMAN PERSEMBAHAN ................................................................. vi
HALAMAN MOTTO............................................................................... vii
ABSTRAKSI........................................................................................... viii
ABSTRACT .............................................................................................. ix
KATA PENGANTAR ................................................................................ x
DAFTAR ISI ............................................................................................ xii
DAFTAR GAMBAR ................................................................................ xv
DAFTAR TABEL .................................................................................. xvii
BAB I PENDAHULUAN
1.1. Latar Belakang Masalah ....................................................................... 1
1.2. Rumusan Masalah ................................................................................ 2
1.3. Batasan Masalah .................................................................................. 2
1.4. Tujuan Penulisan.................................................................................. 3
1.5. Metodologi Penelitian .......................................................................... 3
1.5.1. Studi Literatur ................................................................................... 3
1.5.2. Analisis Sistem.................................................................................. 3
1.5.3. Perancangan Sistem........................................................................... 4
1.5.4. Pembuatan Program .......................................................................... 4
1.5.5. Uji Coba Program ............................................................................. 4
1.6. Sistematika Penulisan........................................................................... 4
14
BAB II LANDASAN TEORI
2.1. Kriptografi ........................................................................................... 6
2.1.1. Algoritma Kriptografi........................................................................ 7
2.1.2. Blok Cipher....................................................................................... 9
2.1.3. S-Boxes........................................................................................... 10
2.2. Algoritma Gost .................................................................................. 10
2.2.1 Enkripsi............................................................................................ 16
2.2.2 Dekripsi ........................................................................................... 22
BAB III ANALISIS DAN PERANCANGAN
3.1. Analisis Sistem .................................................................................. 24
3.1.1. Desain Alur Data............................................................................. 24
3.1.2. Diagram Alir ................................................................................... 26
3.2. Analisis Kebutuhan Sistem................................................................. 30
3.3. Perancangan (Desain) User Interface.................................................. 30
3.3.1. Desain Splash Screen ...................................................................... 31
3.3.2. Desain Main Form........................................................................... 31
3.3.3. Desain Form Enkripsi File............................................................... 32
3.3.4. Desain Form Dekripsi File .............................................................. 33
3.3.5. Desain Form Bantuan...................................................................... 34
3.3.6. Desain Form Tentang Aku .............................................................. 35
BAB IV IMPLEMENTASI DAN ANALISIS HASIL
4.1. Implementasi User Interface............................................................... 36
4.1.1. Form Splash Screen......................................................................... 36
4.1.2. Main Form ...................................................................................... 37
4.2. Uji Coba Program .............................................................................. 55
4.3. Hasil Uji Coba ................................................................................... 57
4.4. Kelebihan dan Kekurangan Program .................................................. 59
4.4.1. Kelebihan........................................................................................ 59
4.4.2. Kekurangan..................................................................................... 60
15
BAB V PENUTUP
5.1. Kesimpulan ........................................................................................ 61
5.2. Saran.................................................................................................. 62
DAFTAR PUSTAKA
LAMPIRAN
16
DAFTAR GAMBAR
Gambar 2.1. Enkripsi dan Dekripsi Sederhana...........................................7
Gambar 2.2. Enkripsi dan Dekripsi dengan Kunci Publik ..........................9
Gambar 2.3. Algoritma Gost untuk Enkripsi ...........................................12
Gambar 2.3.1. Lanjutan Algoritma Gost untuk Enkripsi.............................13
Gambar 2.4. Algoritma Gost untuk Dekripsi ...........................................14
Gambar 2.4.1 Lanjutan Algoritma Gost untuk Dekripsi.............................15
Gambar 2.5 Blok Diagram Gost .............................................................16
Gambar 3.1. Context Diagram.................................................................24
Gambar 3.2. Diagram Zero (Level 0) ......................................................24
Gambar 3.3. Diagram Zero (Level 1) ......................................................25
Gambar 3.4. Diagram Zero (Level 2) ......................................................25
Gambar 3.5. Diagram Alir Inisialisasi Kunci Enkripsi .............................26
Gambar 3.6. Diagram Alir Inisialisasi Kunci Dekripsi.............................27
Gambar 3.7. Diagram Alir Baca Data Asli ..............................................28
Gambar 3.8. Diagram Alir Baca Data telah Dienkripsi ............................28
Gambar 3.9. Diagram Alir Tulis Data Asli ..............................................29
Gambar 3.10. Diagram Alir Tulis Data telah Dienkripsi ............................29
Gambar 3.11. Desain Splash Screen..........................................................31
Gambar 3.12. Desain Main Form ..............................................................32
Gambar 3.13. Desain Form Enkripsi File ..................................................33
Gambar 3.14. Desain Form Dekripsi File ..................................................34
Gambar 3.15. Desain Form Bantuan .........................................................34
Gambar 3.16. Desain Form Tentang Aku ..................................................35
Gambar 4.1 Splash Screen......................................................................36
Gambar 4.2 Main Form Gost Encryption................................................37
Gambar 4.3 Form Enkripsi File ..............................................................38
Gambar 4.4 Pesan Peringatan Masukkan File dan atau Kunci.................38
Gambar 4.5 Pesan Peringatan Kunci Maksimal 32 Karakter ...................39
Gambar 4.6 Pesan Kesalahan File yang Dienkripsi Tidak Ada ...............39
17
Gambar 4.7 Pesan Peringatan Spesifikasi File yang Dienkripsi ..............39
Gambar 4.8 Buka File ............................................................................40
Gambar 4.9 Pesan Konfirmasi Hapus File Asli.......................................40
Gambar 4.10 Pesan Informasi File telah Dihapus .....................................40
Gambar 4.11 Pesan Informasi Simpan File Hasil Enkripsi........................41
Gambar 4.12 Proses pada Tombol Enkrip ................................................41
Gambar 4.13 Dekripsi File .......................................................................46
Gambar 4.14 Pesan Peringatan Masukkan File dan atau Kunci.................46
Gambar 4.15 Pesan Peringatan Kunci Maksimal 32 Karakter ...................46
Gambar 4.16 Pesan Kesalahan File yang Didekripsi Tidak Ada ...............47
Gambar 4.17 Pesan Peringatan Spesifikasi File yang Didekripsi ..............47
Gambar 4.18 Buka File ............................................................................47
Gambar 4.19 Pesan Informasi Proses Dekripsi Selesai .............................48
Gambar 4.20 Simpan File.........................................................................48
Gambar 4.21 Pesan Konfirmasi Melihat Hasil Dekripsi............................48
Gambar 4.22 Proses pada Tombol Dekrip ................................................49
Gambar 4.23 Form Bantuan .....................................................................54
Gambar 4.24 Form Tentang Aku..............................................................54
Gambar 4.25 Pesan Konfirmasi Keluar Program ......................................54
Gambar 4.26 Uji Coba Berkas Tes.txt ......................................................55
Gambar 4.27 Proses Enkripsi File ............................................................55
Gambar 4.28 Pesan Konfirmasi Enkripsi Selesai ......................................56
Gambar 4.29 Hasil Enkripsi Berkas Tes.gost............................................56
Gambar 4.30 Proses Dekripsi File ............................................................56
Gambar 4.31 Pesan Konfirmasi Dekripsi selesai ......................................57
Gambar 4.32 Pesan Konfirmasi Melihat Hasil Dekripsi............................57
Gambar 4.33 Hasil Dekripsi Berkas Tes.txt..............................................57
18
DAFTAR TABEL
Tabel 2.1. Tabel Kebenaran XOR............................................................ 10
Tabel 2.2. Round dan Subkey dalam Proses Enkripsi............................... 22
Tabel 2.3. Round dan Subkey dalam Proses Dekripsi .............................. 22
Tabel 4.1. Hasil Enkripsi Berkas Dokumen ............................................. 58
Tabel 4.2. Hasil Dekripsi Berkas Dokumen ............................................. 58
19
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Perkembangan teknologi sekarang ini memberikan kemudahan agar orang
dapat saling berkomunikasi dan mengirimkan informasi secara cepat. Tetapi
terkadang informasi yang dikirimkan bersifat sangat penting dan harus
dirahasiakan agar informasi tersebut tidak disalahgunakan oleh orang yang tidak
berhak. Seperti pada data-data penting milik negara yang penting dan rahasia, bila
sampai diketahui negara lain, maka dapat membahayakan negara tersebut. Selain
itu, juga pada informasi kartu kredit, bila informasi ini jatuh ke tangan orang
jahat, maka kartu kredit tersebut bisa disalahgunakan dan pemilik kartu kredit
harus bersiap menghadapi naiknya tagihan kartu kreditnya.
Dalam pengiriman informasi bersifat rahasia diperlukan suatu metode yang
disebut kriptografi, yaitu ilmu dan seni penyimpanan pesan secara aman sehingga
informasi tersebut tidak dapat diketahui oleh pihak yang tidak sah. Kriptografi
akan mengonversi data asli (plaintext) ke dalam bentuk data sandi (ciphertext)
yang tidak dapat dikenali untuk menjaga kerahasiaan data. Proses ini disebut
enkripsi. Hasil enkripsi disebut ciphertext (teks terenkripsi). Kemudian ciphertext
akan didekripsi dengan kunci yang sama menjadi plaintext kembali. Proses ini
disebut dekripsi.
Metode kriptografi yang digunakan dalam tugas akhir ini yaitu Algoritma
Gost. Metode ini mempunyai algoritma yang sederhana dalam pembuatannya dan
20
kunci yang cukup panjang untuk pengamanan data. Algoritma Gost merupakan
algoritma blok cipher dengan menggunakan kunci tunggal (symmetric key).
1.2 Rumusan Masalah
Permasalahan pada penelitian ini adalah bagaimana cara membuat program
enkripsi dan dekripsi dengan menggunakan Algoritma Gost. Selain itu, bagaimana
mencari rerata waktu dan rerata rasio ketiga tipe berkas (.txt,.doc,.rtf).
1.3 Batasan Masalah
• Program diimplementasikan dengan menggunakan Delphi 7.0.
• Program ini dibuat untuk pemakaian single user.
• Kunci yang dipakai tidak disimpan dalam berkas tertentu atau berkas
yang terenkripsi. Jadi jika user salah memasukkan kunci sewaktu
mendekripsi berkas tersebut, maka berkas tidak akan kembali seperti
aslinya.
• Program diimplementasikan untuk mengenkripsi dan mendekripsi
berkas dokumen (.txt, .doc, .rtf).
• Program dibuat di sistem operasi Windows.
• Program akan menyimpan nama berkas hasil enkripsi sama dengan
nama berkas aslinya tetapi berbeda tipe (.gost). Hal ini bertujuan agar
user dapat mengetahui berkas mana yang sudah dienkripsi.
• Program dapat menghapus berkas asli yang telah dienkripsi. Jika user
menghapus berkas asli, maka setelah proses dekripsi, user dapat
21
menentukan apakah ingin menyimpan nama berkas hasil dekripsi sama
atau berbeda dengan nama berkas asli. Jadi untuk mengetahui berkas
terenkripsi yang telah didekripsi tergantung dari nama berkas yang
dimasukkan user pada proses simpan setelah proses dekripsi.
1.4 Tujuan Penulisan
Tujuan penelitian ini adalah untuk mengimplementasikan Algoritma Gost
untuk mengenkripsi dan mendekripsi berkas dokumen (.txt, .doc, .rtf). Penelitian
ini juga bertujuan untuk mencari rerata waktu dan rerata rasio ketiga tipe berkas.
Perangkat lunak yang dihasilkan diharapkan dapat dipergunakan untuk
melindungi berkas-berkas maupun dokumen rahasia dan penting sehingga tidak
dapat dibaca oleh orang yang tidak berkepentingan.
1.5 Metodologi Penelitian
1.5.1 Studi Literatur
• Mengenal prinsip enkripsi dan dekripsi sebagai pengetahuan dasar
untuk memecahkan permasalahan.
• Mengenal dan memahami Algoritma Gost dan proses kerjanya.
• Pendalaman pengetahuan tentang program-program Delphi untuk
mendukung pemecahan permasalahan.
1.5.2 Analisis Sistem
Membuat gambaran mengenai data dan proses serta kebutuhan sistem
yang diperlukan dalam pengimplementasian program.
22
1.5.3 Perancangan Sistem
Perancangan meliputi desain form-form yang digunakan beserta
tombol-tombol yang digunakan pada setiap form.
1.5.4 Pembuatan Program
Tahap ini adalah penerapan desain ke dalam bentuk program dengan
memanfaatkan bahasa pemrograman yang ada, yaitu Borland Delphi 7.0.
1.5.5 Uji Coba Program
• Menganalisis apakah program sesuai dengan algoritma yang digunakan
dan dapat berjalan dengan baik untuk mengekripsi dan mendekripsi
berkas dokumen (.txt,.rtf.,doc).
• Menganalisis pengaruh ukuran suatu berkas terhadap waktu proses.
1.6 Sistematika Penulisan
BAB I PENDAHULUAN
Berisi latar belakang masalah, rumusan masalah, batasan masalah,
tujuan penulisan, metodologi penelitian, dan sistematika penulisan.
BAB II LANDASAN TEORI
Berisi tentang pengertian kriptografi, algoritma kriptografi, Algoritma
Gost, dan contoh cara melakukan enkripsi dan dekripsi dengan
menggunakan Algoritma Gost.
BAB III ANALISIS DAN PERANCANGAN
Berisi tentang perancangan sistem berupa diagram alir enkripsi dan
dekripsi menggunakan Algoritma Gost. Bab ini juga berisi tentang
23
rancangan desain user interface, serta dukungan hardware dan software
terhadap program yang telah dibuat.
BAB IV IMPLEMENTASI DAN ANALISIS HASIL
Berisi tentang implementasi perancangan (desain) ke dalam bentuk
program nyata yang dapat dipergunakan secara langsung. Selanjutnya
program akan diuji coba untuk melihat kelebihan dan kekurangannya.
BAB V PENUTUP
Berisi kesimpulan dan saran dari program enkripsi dekripsi
menggunakan Algoritma Gost untuk pengembangan selanjutnya.
24
BAB II
LANDASAN TEORI
2.1 Kriptografi
Kriptografi berasal dari bahasa Yunani yaitu Crypto dan Graphia yang
berarti penulisan rahasia (www.criptography.com). Kriptografi (cryptography)
berarti ilmu dan seni penyimpanan pesan, data, atau informasi secara aman
sehingga informasi tersebut tidak dapat diketahui oleh pihak yang tidak sah.
Kriptografi mentransformasikan data asli (plaintext) ke dalam bentuk data
sandi (ciphertext) yang tidak dapat dikenali untuk menjaga kerahasiaan data.
Ciphertext inilah yang kemudian dikirimkan oleh pengirim (sender) kepada
penerima (receiver). Setelah sampai di penerima, ciphertext tersebut
ditranformasikan kembali ke dalam bentuk plaintext agar dapat dikenali.
Proses tranformasi dari plaintext menjadi ciphertext disebut enkripsi
(encryption), sedangkan proses mentransformasikan kembali ciphertext menjadi
plaintext disebut proses dekripsi (decryption) (Iswanti, 2003).
Kriptografi menggunakan suatu algoritma (cipher) dan kunci (key) untuk
mengenkripsi dan mendekripsi data. Cipher adalah fungsi matematika yang
digunakan untuk mengenkripsi dan mendekripsi, sedangkan kunci merupakan
sederetan bit yang diperlukan untuk mengenkripsi dan mendekripsi data. Secara
sederhana dapat digambarkan sebagai berikut :
25
Kunci
Gambar 2.1 Enkripsi dan Dekripsi Sederhana
Secara umum, enkripsi dan dekripsi dapat diterangkan sebagai berikut :
EK (M) = C (Proses Enkripsi)
DK (C) = M (Proses Dekripsi)
Pada proses enkripsi, pesan M akan disandikan dengan kunci K sehingga
menghasilkan pesan C. Untuk proses dekripsi, pesan C akan diuraikan dengan
menggunakan kunci K sehingga akan menghasilkan pesan M yang sama seperti
sebelumnya (Iswanti, 2003).
Pesan yang diamankan bergantung pada kunci yang digunakan, dan bukan
pada algoritma yang digunakan. Oleh karena itu, walaupun algoritma-algoritma
yang digunakan tersebut dapat dipublikasikan, namun selama kunci yang dipakai
tidak diketahui, maka pesan tetap tidak bisa dibaca (Kurniawan, 2004).
2.1.1 Algoritma Kriptografi
Berdasarkan kunci yang dipakai, algoritma kriptografi dapat dibedakan
menjadi 2, yaitu :
a. Kunci Tunggal (Symmetric Algorithm)
Algoritma simetris (konvensional) adalah algoritma yang menggunakan
satu kunci yang sama untuk proses enkripsi dan dekripsi. Jika misalkan A ingin
mengirim pesan kepada B, maka pesan tersebut akan dienkrip dengan
PlaintextEnkripsi DekripsiCiphertextPlaintext
26
menggunakan suatu kunci. Jika B menerima pesan tersebut, maka B harus
mendekrip pesan dengan menggunakan kunci yang sama dengan kunci yang
digunakan oleh A. Keuntungan algoritma simetris yaitu memiliki kecepatan
proses enkripsi dan dekripsi jauh lebih cepat daripada menggunakan kunci publik.
Kelemahan kunci simetris yaitu kunci yang digunakan hanya satu, sehingga jika
kunci disergap ditengah jalan atau sudah ditebak orang lain, maka sistem ini sudah
tidak aman lagi (Raharjo, 2002). Contohnya DES, Gost, IDEA.
Algoritma simetris dibagi menajdi 2 yaitu algoritma aliran (Stream
Ciphers) dan algoritma blok (Block Ciphers). Pada algoritma aliran, proses
penyandiannya berorientasi pada satu bit atau satu byte data. Sedangkan pada
algoritma blok, proses penyandiannya berorientasi pada sekumpulan bit atau byte
data (per blok).
b. Kunci Publik (Public Key Algorithms)
Algoritma kunci umum adalah algoritma yang menggunakan kunci yang
berbeda untuk proses enkripsi dan dekripsinya. Jika A ingin mengirim pesan
kepada B, maka A akan mengenkripsi pesan tersebut dengan menggunakan kunci
publik dari B. Jika B menerima pesan dari A, maka B akan mendekrip pesan
tersebut dengan menggunakan kunci pribadi dari B sendiri. Keuntungan kunci
publik yaitu memberikan jaminan keamanan dalam melakukan pertukaran
informasi karena kunci yang dipublikasikan adalah kunci publik, sedangkan kunci
rahasia tidak pernah disebarkan secara umum. Kunci umum (public key) dapat
diketahui oleh setiap orang dibuat untuk enkripsi, sedangkan kunci pribadi
27
(private key) hanya diketahui oleh pihak yang sah (Raharjo, 2002). Contohnya
RSA, Elgamal, Diffie-Hellman.
Kunci Publik Kunci Private
Gambar 2.2 Enkripsi dan Dekripsi dengan Kunci Publik
2.1.2 Blok Cipher
Algoritma blok cipher adalah algoritma yang mempunyai masukan dan
keluaran berupa satu blok dan setiap bloknya terdiri dari banyak bit (misalnya 1
blok terdiri dari 64 atau 128 bit). (Kurniawan, 2004). Sebagian besar algoritma
kunci simetris yang ada menggunakan blok cipher. Iterasi yang digunakan dalam
blok cipher sebagian merupakan jaringan Feistel.
Jaringan Feistel merupakan suatu blok cipher dengan struktur tertentu.
Jaringan Feistel dirancang oleh Feistel dan Don Coppersmith. Operasi dasar dari
Jaringan Feistel yaitu :
• Bagi blok plaintext menjadi 2 bagian yang sama (L0,R0).
• Untuk tiap putaran i=1,2,3....n hitung
Li = Ri-1
Ri = Li-1 xor f(Ri-1,Ki)
• f adalah fungsi perputaran dan Ki adalah sub kuncinya.
• Kemudian ciphertext (Ln,Rn)
PlaintextEnkripsi DekripsiCiphertextPlaintext
28
• Tanpa memperhatikan fungsi f, dekripsi dapat diselesaikan dengan
Ri-1= Li
Li-1 = Ri xor f(Li, Ki)
• Tabel Kebenaran XOR (Schneier, 1996)
Tabel 2.1 Tabel Kebenaran XOR
A B XOR
0 0 0
0 1 1
1 0 1
1 1 0
2.1.3 S-Boxes
Substitution Box (S-box) merupakan komponen dasar dari algoritma kunci
simetris yang digunakan untuk mengaburkan hubungan antara plaintext dengan
ciphertext. Pada umumnya, suatu S-box akan mengambil sejumlah besar inputan
yang berukuran m dan mengubahnya menjadi sejumlah besar bit keluaran n.
dimana m×n tersebut akan dipetakan ke dalam sebuah tabel.
(en.wikipedia.org/wiki/Substitution_box).
2.2 Algoritma Gost
Gost berasal dari kata Gosudarstvennyi Standard (Standar Pemerintah).
(en.wikipedia.org/wiki/GOST). Gost merupakan blok cipher dari bekas Uni
Sovyet. Gost didesain untuk memodifikasi DES dan mencoba untuk mencapai
keseimbangan antara efisiensi dan keamanan. Gost mempunyai prosedur algoitma
29
yang lebih mudah dibandingkan dengan DES. Gost tidak menggunakan ekspansi
permutasi seperti yang digunakan DES, melainkan menggunakan rotasi (cyclic
shift rotation) sebanyak 11 bit. Gost mempunyai 4 input dan 4 output S-box,
sehingga jika terjadi perubahan satu inputan akan berpengaruh terhadap satu S-
box dalam satu putaran, dimana hal ini juga akan berpengaruh terhadap putaran
berikutnya. Gost membutuhkan delapan putaran sebelum satu perubahan dari
inputan mempengaruhi setiap output bit. Gost mempunyai panjang kunci lebih
panjang dan dua kali putaran lebih banyak daripada DES. (Schneier, 1996).
Algoritma Gost merupakan blok cipher 64 bit dengan panjang kunci 256 bit.
Algoritma ini mengiterasi algoritma enkripsi sederhana sebanyak 32 putaran
(round) Semakin banyak putaran, semakin sulit di-attack. Algoritma Gost
menggunakan subkunci dan substitution box (S-box). Subkunci dihasilkan dari
256 bit kunci dibagi menjadi delapan bagian yang masing-masing mempunyai 32
bit :
(k32,……...k1) = K1
(k64,…….k33) = K2
…...
(k256,….k225) = K8
Gost mempunyai 8 S-box yang didalamnya terdapat 16 kolom. Setiap putaran
menggunakan subkunci yang berbeda. Berikut Algoritma Gost untuk enkripsi
pada gambar 2.3.
30
Gambar 2.3 Algoritma Gost untuk Enkripsi
31
Gambar 2.3.1 Lanjutan Algoritma Gost untuk Enkripsi
32
Gambar 2.4 Algoritma Gost untuk Dekripsi
33
Gambar 2.4.1 Lanjutan Algoritma Gost untuk Dekripsi
34
Untuk blok diagram Gost dapat dilihat pada gambar 2.5.
32 bit 64 bit 32 bit
K1
+
K2
+
29 putaran lagi
K32
+
32 bit 32 bit
64 bit
Gambar 2.5 Blok Diagram Gost
2.2.1 Enkripsi
Proses enkripsi dalam Algoritma Gost mempunyai beberapa proses yaitu:
1. Inisialisasi kunci enkripsi
Algoritma Gost menggunakan kunci 256 bit. Kemudian kunci akan
dimasukkan ke 8 sub blok kunci yang masing-masing berisi 32 bit. Kunci yang
dimasukkan berupa karakter. Pertama, kunci akan diubah ke dalam kode ASCII
Plaintext
S-Box<<<11
S-Box<<<11
S-Box<<<11
Chipertext
35
(American Standard Code for International Interchange). Satu karakter yang
diubah berisi 8 bit (Sukmawan, 2006). Jika kunci yang dimasukkan kurang dari
256 bit (32 karakter), maka sisanya akan diset 0. Setelah semua kunci diubah ke
bentuk biner, kunci akan dimasukkan ke dalam 8 sub blok kunci yang masing-
masing berisi 32 bit. Contoh prosesnya seperti di bawah ini :
Kunci : ab
Konversi kunci ke kode ASCII :
a 97 0 0 0 0 0 0
b 98 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Kunci yang dimasukkan hanya terdapat 2 karakter kunci sedangkan sisanya
diset 0. Kemudian dari ASCII, kunci diubah ke bentuk biner. Setelah semua kunci
diubah ke bentuk biner, kunci akan dimasukkan ke dalam 8 sub blok kunci yang
masing-masing berisi 32 bit.
1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...
...
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
36
2. Baca Data Asli
Algoritma Gost memerlukan 64 bit data masukan yang akan masuk dalam
proses. Data asli ( plaintext) 64 bit diubah ke kode ASCII. Setelah itu, diubah ke
dalam bentuk biner. Proses penggambarannya seperti contoh berikut :
Data asli : keretaku
Konversi data asli ke biner :
k 107 0 1 1 0 1 0 1 1 t 116 0 1 1 1 0 1 0 0
e 101 0 1 1 0 0 1 0 1 a 97 0 1 1 0 0 0 0 1
r 114 0 1 1 1 0 0 1 0 k 107 0 1 1 0 1 0 1 1
e 101 0 1 1 0 0 1 0 1 u 117 0 1 1 1 0 1 0 1
3. Proses enkripsi data
Proses enkripsi dapat dilakukan bila terdapat data asli dan kunci yang
dimasukkan. Total putaran dalam Algoritma Gost ini berjumlah 32 putaran. Sub
blok kunci (subkey) untuk putaran i adalah Ki. Pada satu putaran ke-i operasinya
adalah sebagai berikut :
pkirii = pkanani-1 , untuk i=1,2,3....32 rounds
pkanani = pkirii-1 xor f(pkanani-1,Ki)
Pada bagian penambahan pkanani-1 dengan subkey Ki, terdapat aturan :
if pkanan i-1 +Ki < 232 then pkanan i-1 +Ki
if pkanan i-1 +Ki > 232 then pkanan i-1 +Ki -232 (modulus 232)
Fungsi modulus yaitu agar setiap bilangan tidak melebihi 255 (hitungan per byte)
atau tidak melebihi 232 (untuk semua byte) (Sukmawan, 2006).
37
Setelah diubah ke bentuk biner, data asli (plaintext) dibagi menjadi 2 yaitu 32
bit bagian kiri, pkiri dan 32 bit bagian kanan, pkanan. Proses enkripsi yang terjadi
pada pkanan mulai dari putaran pertama sampai putaran 32 (terakhir) yaitu tahap
penambahan dengan kunci, substitusi dengan S-box, rotasi bit dan proses XOR.
Hasilnya akan menjadi pkanan yang baru dan pkanan semula menjadi pkiri
(swap). Namun pada proses penggabungan, maka akan dibalik kembali, yaitu
pkanan akan menjadi pkiri dan kiri menjadi pkanan.
Jika data lebih dari 8 byte maka akan diambil 8 byte data berikutnya. Hal ini
dapat dilakukan setelah 8 byte sebelumnya sudah dienkripsi. Proses ini akan
dilakukan hingga semua data sudah dienkripsi semua. Sebagai gambaran dapat
dilihat proses berikut :
Pkiri0 : Pkanan0 :
k 107 0 1 1 0 1 0 1 1 t 116 0 1 1 1 0 1 0 0
e 101 0 1 1 0 0 1 0 1 a 97 0 1 1 0 0 0 0 1
r 114 0 1 1 1 0 0 1 0 k 107 0 1 1 0 1 0 1 1
e 101 0 1 1 0 0 1 0 1 u 117 0 1 1 1 0 1 0 1
1) Hsl 1 =pkanan 0 +K1
Pkiri1 =pkanan 0
Berikut contoh proses untuk putaran pertama :
pka0 0 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1
K 1 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+
Hsl1 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1
Setelah dijumlah, maka hasilnya diubah ke bentuk hexadesimal seperti di
bawah ini :
38
Urutan (Xn) X1 X2 X3 X4 X5 X6 X7 X8
Hsl1 1111 0101 1100 0011 0110 1011 0111 0101
Hexa 15 5 12 3 6 11 7 5
Setelah diubah menjadi hexadesimal, lalu dibagi menjadi delapan bagian
yang masing-masing berisi 4 bit dan setiap bagian menjadi input S-box
yang berbeda. Algoritma Gost mempunyai 8 buah S-box, urutan 4 bit
pertama (X1) menjadi S-box pertama, 4 bit kedua (X2) menjadi S-box
kedua, dan seterusnya. Sebagai contoh proses dapat dilihat di bawah ini :
Xn 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
s-box 1 4 9 10 2 13 8 0 14 6 11 1 12 7 15 5 3
Hasilnya = [X1, s-box 1] = [15,3]
2) Output dari 8 S-box kemudian diubah ke bentuk biner kembali dan
dikombinasikan menjadi bilangan 32 bit. Sebagai contoh proses dapat
dilihat di bawah ini :
Hsl1 3 13 6 1 13 5 9 7
Biner 0011 1101 0110 0001 1101 0101 1001 0111
Rotasi 11 bit ke kiri :
3) Hsl=Hsl XOR pkiri 0 dengan hasil di bawah ini :
Biner 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1
Hsl1 0 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 1 0 1 1
Hsl1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 1 1 1 0
39
4) Hasilnya yaitu Hsl1 menjadi pkanan dan pka0 menjadi pkiri (swap) untuk
proses berikutnya.
pkanan1 = Hsl1
pkiri 1 =pka 0
Hasil pkanan didapat dari hasil akhir perhitungan dan pkiri didapat dari
pkanan putaran sebelumnya. Bila sudah sampai putaran ke-32 (terakhir),
jika akan ditulis maka hasilnya dibalik, pkanan di bagian kiri dan pkiri di
bagian kanan. Jika masukan kunci (subkey) dan data asli sama seperti yang
dicontohkan sebelumnya, maka hasil akhirnya sebagai berikut:
pkanan32
0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0
pkiri32 :
0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1
4. Tulis data telah dienkripsi
Penulisan data yang telah dienkripsi hampir sama dengan proses
pembacaan. Penulisan data yang telah dienkripsi akan ditulis per byte. Cara
penulisannya karakter pertama yang sudah dienkripsi akan digabung dengan
karakter kedua dan seterusnya. Karakter yang masih berbentuk biner akan
diubah ke bilangan desimal, yang kemudian akan diterjemahkan ke dalam
kode ASCII untuk mendapatkan karakter hasil enkripsinya. Kemudian pkanan
dan pkiri akan digabung menjadi data terenkripsi (Ciphertext) 64 bit. Berikut
hasilnya :
40
Pkanan32 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0
ASCII 73 181 187 32
Cipher I µ »
Pkiri32 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1
ASCII 8 76 15 131
Cipher L
Ciphertext = pkanan32+pkiri32
= Iµ» L
2.2.2 Dekripsi
Proses dekripsi juga mempunyai beberapa proses di bawah ini :
1. Inisialisasi kunci dekripsi
Inisialisasi kunci dekripsi sama dengan kunci enkripsi karena kunci yang
dimasukkan sama (simetris). Kunci yang dimasukkan akan diubah ke dalam kode
ASCII. Kemudian kunci akan dimasukkan ke 8 sub blok kunci yang masing-
masing berisi 32 bit. Setelah dimasukkan ke 8 sub blok kunci 32 bit, maka urutan
kunci yang digunakan (key schedule) dalam proses dekripsi akan dibalik.
Perbandingan urutan sub blok kunci tiap putaran dalam proses enkripsi dan
dekripsi (Schneier, 1996) dapat dilihat pada tabel 2.2 dan tabel 2.3 di bawah ini.
Round 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Subkey 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
Round 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Subkey 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1
Tabel 2.2 Round dan subkey dalam Proses Enkripsi
41
Round 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Subkey 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1
Round 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Subkey 8 7 6 5 4 3 2 1 8 7 6 5 4 3 2 1
Tabel 2.3 Round dan subkey dalam Proses Dekripsi
2. Baca data telah dienkripsi
Pembacaan data yang telah dienkripsi sama dengan pembacaan data asli.
Proses penggambarannya seperti contoh berikut :
Data terenkripsi : Iµ» L
Konversi data terenkripsi ke biner :
I 73 0 1 0 0 1 0 0 1 8 0 0 0 0 1 0 0 0
µ 181 1 0 1 1 0 1 0 1 L 76 0 1 0 0 1 1 0 0
» 187 1 0 1 1 1 0 1 1 15 0 0 0 0 1 1 1 1
32 0 0 1 0 0 0 0 0 131 1 0 0 0 0 0 1 1
3. Proses dekripsi data
Proses dekripsi sama dengan enkripsi. Jika kunci yang dimasukkan
sama, urutan sub blok kunci digunakan terbalik, dan masukan data sesuai yang
dicontohkan pada proses enkripsi, maka hasil data asli (plaintext) yang dihasilkan:
Pka32 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 1 0 1
Pkiri32 0 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1
4. Tulis data asli (hasil dekripsi)
42
Penulisan data asli (data hasil dekripsi) sama dengan data telah dienkripsi.
Berikut hasilnya :
Pka32 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 1 0 1
ASCII 107 101 114 101
plain k e r e
Pkiri32 0 1 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ASCII 116 97 107 117
plain t a k u
Ciphertext = pkanan32+pkiri32
= keretaku
43
BAB III
ANALISIS DAN PERANCANGAN
3.1 ANALISIS SISTEM
3.1.1 Desain Alur Data
Sistem enkripsi dan dekripsi ini dapat dimodelkan dengan
menggunakan DFD (Data Flow Diagram) sebagai berikut :
1. Context Diagram
Gambar 3.1 Context Diagram
2. Diagram Zero (Level 0)
Gambar 3.2 Diagram Zero (Level 0)
44
3. Diagram Zero (Level 1)
Gambar 3.3 Diagram Zero (Level 1)
4. Diagram Zero (Level 2)
Gambar 3.4 Diagram Zero (Level 2)
45
3.1.2 Diagram Alir
Diagram alir menjelaskan proses yang terjadi dalam sistem kecuali
proses perhitungan algoritma yang digunakan. Diagram alir menjelaskan
proses dalam DFD (Data Flow Diagram) seperti beberapa diagram berikut:
1. Inisialisasi Kunci Enkripsi
Gambar 3.5 Diagram Alir Inisialisasi Kunci Enkripsi
46
2. Inisialisasi Kunci Dekripsi
Gambar 3.6 Diagram Alir Inisialisasi Kunci Dekripsi
47
3. Baca Data Asli
Gambar 3.7 Diagram Alir Baca Data Asli
4. Baca Data telah Dienkripsi
Gambar 3.8 Diagram Alir Baca Data telah Dienkripsi
48
5. Tulis Data Asli
Gambar 3.9 Diagram Alir Tulis Data Asli
6. Tulis Data telah Dienkripsi
Gambar 3.10 Diagram Alir Tulis Data telah Dienkripsi
49
3.2 ANALISIS KEBUTUHAN SISTEM
Kebutuhan hardware dan software untuk membuat dan menguji program :
§ Kebutuhan Hardware :
Pentium III/IV CPU 1,7Ghz
RAM 256 MB
Harddisk 20Gb
Mouse, Keyboard
§ Kebutuhan Software :
Windows 98/XP
Borland Delphi 7.0
3.3 PERANCANGAN (DESAIN) USER INTERFACE
3.3.1 Desain Splash Screen
Form Splash Screen berfungsi sebagai tampilan awal yang muncul hanya
beberapa detik sebelum masuk ke Form Utama. Gambar 3.11 menunjukkan desain
desain Form Splash Screen.
50
Gambar 3.11 Desain Splash Screen
3.3.2 Desain Main Form
Main Form berguna untuk memanggil form-form lainnya. Pada Main Form
terdapat beberapa menu, sebagai berikut :
• Enkripsi : Menu Enkripsi untuk memanggil Form Enkripsi.
• Dekripsi : Menu Dekripsi untuk memanggil Form Dekripsi.
• Bantuan : Menu Bantuan yang dapat membantu user dalam
penggunaan program ini.
• Tentang Aku : Menu Tentang Aku berisi keterangan pembuat program.
• Keluar : Menu Keluar untuk keluar dari program.
IMAGE DAN TEXT TITLE
TEXT
TEXT
51
IMAGE
Gambar 3.12 Desain Main Form
3.3.3 Desain Form Enkripsi File
Form Enkripsi berfungsi untuk melakukan proses enkripsi. File yang
dienkripsi akan diperoleh dengan menekan tombol Buka disampingnya. Tombol
tersebut yang akan digunakan untuk mencari lokasi dan nama file yang akan
dienkripsi. Kemudian tombol Enkrip jika user telah memasukkan kunci dan setuju
untuk melakukan enkripsi. Tombol Keluar digunakan untuk menolak atau selesai
melakukan enkripsi. Terdapat kolom waktu dan progres bar untuk menunjukkan
lama proses enkripsi. Terdapat ukuran file untuk menampilkan ukuran file setelah
file dienkripsi. Gambar 3.13 berikut ini adalah gambar desain Form Enkripsi File.
Main Form – GOST Encryption
ENKRIPSI DEKRIPSI BANTUAN TENTANG AKU KELUAR
NamaJamHari, Tgl Copyright 2007Main Form - Welcome
52
File yang dienkripsi :
Kunci Enkripsi:
Ukuran file
Gambar 3.13 Desain Form Enkripsi File
3.3.4 Desain Form Dekripsi File
Form Dekripsi berfungsi untuk melakukan proses dekripsi. File yang
didekripsi akan diperoleh dengan menekan tombol Buka disampingnya. Tombol
tersebut digunakan untuk mencari lokasi dan nama file yang akan didekripsi.
Kemudian tombol Dekrip jika user telah memasukkan kunci dan setuju untuk
melakukan dekripsi. Untuk menyimpan file yang telah didekripsi, dapat dilakukan
dengan menekan tombol Simpan dibawahnya. Tombol Keluar digunakan untuk
menolak atau selesai melakukan dekripsi. Terdapat kolom waktu dan progres bar
untuk menunjukkan lama proses dekripsi. Terdapat ukuran file untuk
menampilkan ukuran file setelah file didekripsi. Gambar 3.14 berikut ini adalah
gambar desain Form Dekripsi File.
Waktu
Enkripsi File
Buka
Proses
Keluar
Enkrip
53
Ukuran File
HELP ME PLEASE…!
TEXT
File yang didekripsi :
Kunci Dekripsi :
Gambar 3.14 Desain Form Dekripsi File
3.3.5 Desain Form Bantuan
Desain Form Bantuan dapat dilihat pada gambar 3.15 dibawah ini:
Gambar 3.15 Desain Form Bantuan
Waktu
Dekripsi File
Buka
Proses
Keluar
Dekrip
Simpan
Bantuan
OK
Icon
54
IMAGE DAN TEXT
3.3.6 Desain Form Tentang Aku
Desain Form Tentang Aku dapat dilihat pada gambar 3.16 dibawah ini:
Gambar 3.16 Desain Form Tentang Aku
Tentang Aku
TEXT LOGO
55
BAB IV
IMPLEMENTASI DAN ANALISIS HASIL
4.1 Implementasi User Interface
Implementasi program enkripsi dekripsi menggunakan Algoritma Gost ini
terdiri dari beberapa form yaitu Form Splash Screen, Form Gost Encryption, Form
Enkripsi File, Form Dekripsi File, Form About, dan Form Programmer.
4.1.1 Form Splash Screen
Form ini berada pada awal tampilan program ketika program diklik. Form
ini hanya tampil selama beberapa detik dengan menggunakan timer. Program
yang terdapat pada form ini yaitu:
Tampilan Form ini dapat dilihat pada gambar 4.1
Gambar 4.1 Splash Screen
during:=during+1;
if during=7 then
begin
form1.show;
form8.Hide;
end;
label7.Caption:=label7.Caption+'* ';
56
4.1.2 Main Form
Program yang terdapat pada form ini yaitu :
• Program untuk memanggil Form Enkripsi :
Form3.ShowModal;
• Program untuk memanggil Form Dekripsi :
Form4.ShowModal;
• Program untuk memanggil Form Bantuan :
Form5.ShowModal;
• Program untuk memanggil Form Tentang Aku :
Form6.ShowModal;
• Program untuk keluar :
Tampilan Form ini dapat dilihat pada gambar 4.2.
Gambar 4.2 Main Form Gost Encryption
if(messagebox(0,'Anda ingin keluar dari program ?' ,
'Confirmation',MB_YESNO+MB_ICONQUESTION))=IDYES then
postquitmessage(0);
exit;
57
Form ini mempunyai beberapa menu yaitu :
• Enkripsi : Jika akan melakukan proses enkripsi, user dapat memilih Menu
Enkripsi atau Ctrl-E. Selanjutnya akan muncul Form Enkripsi File.
Sebelum melakukan enkripsi, user terlebih dulu membuka file yang akan
dienkripsi dan memasukkan kunci. Setelah itu, user dapat menekan tombol
Enkrip untuk melakukan enkripsi. Tampilan Form Enkripsi File dapat
dilihat pada gambar 4.3.
Gambar 4.3 Form Enkripsi File
Jika file dan atau kunci belum dimasukkan, maka akan muncul pesan
kesalahan ”Silakan masukkan File dan atau Kunci terlebih dahulu.”
Tampilan pesan kesalahan dapat dilihat pada gambar 4.4.
Gambar 4.4 Pesan Peringatan Masukkan File dan atau Kunci
Jika file sudah dimasukkan namun kunci lebih dari 32 karakter, maka akan
muncul tampilan seperti gambar 4.5 di bawah ini :
58
Gambar 4.5 Pesan Peringatan Kunci Maksimal 32 Karakter
Jika kunci sudah dimasukkan, tetapi file diketik manual dalam textbox atau
file tidak ada dalam disk, maka akan tampil pesan seperti pada gambar 4.6.
Gambar 4.6 Pesan Kesalahan File yang Dienkripsi Tidak Ada
Jika file yang dimasukkan bukan berekstensi .txt,.doc, dan .rtf, maka akan
tampil pesan pada gambar 4.7 berikut:
Gambar 4.7 Pesan Peringatan Spesifikasi File yang Dienkripsi
Untuk membuka file yang akan dienkripsi, user dapat menekan tombol
Buka. Tombol ini berguna untuk mencari path dari file yang dicari.
Tampilan Buka File dapat dilihat pada gambar 4.8.
59
Gambar 4.8 Buka File
Jika proses enkripsi telah selesai, maka user dapat menentukan apakah file
/berkas asli akan dihapus atau tidak. Berikut tampilan Pesan Konfirmasi
pada gambar 4.9.
Gambar 4.9 Pesan Konfirmasi Hapus File Asli
Jika user menentukan bahwa file/berkas asli dihapus, setelah menekan
tombol Yes, maka file akan dibuang ke Recycle Bin. Tampilan pesan
seperti gambar 4.10 di bawah ini.
Gambar 4.10 Pesan Informasi File telah Dihapus
60
Program akan menyimpan file yang telah dienkripsi secara otomatis di
direktori yang sama dengan direktori file asli. Tampilan pesan seperti pada
gambar 4.11 di bawah ini.
Gambar 4.11 Pesan Informasi Simpan File Hasil Enkripsi
Beberapa proses yang terjadi ketika tombol Enkrip diklik :
Gambar 4.12 Proses pada Tombol Enkrip
61
Berikut isi program beberapa proses pada tombol Enkrip seperti yang telah
dijelaskan pada bab analisis dan perancangan :
1. Inisialisasi kunci enkripsi
Berikut baris-baris perintah untuk inisialisasi kunci :
2. Baca data asli
Berikut baris-baris perintah untuk baca data asli :
isi:=edit2.text;
for i:=1 to 8 do
kunci[i]:='';
j:=1;
for i:=1 to length(edit2.text) do
begin
kodeascii:=ord(isi[i]);
biner:=caribiner(kodeascii);
kunci[j]:=kunci[j]+biner;
if length(kunci[j])=32 then inc(j);
end;
if j<=8 then
begin
for i:=length(kunci[j])+1 to 32 do
kunci[j]:=kunci[j]+'0';
for k:=j+1 to 8 do
kunci[k]:='00000000000000000000000000000000';
end;
namafile:=copy(opendialog1.FileName,1,length(opendialog1.fi
lename)-3);
namafile:=namafile+'gost';
AssignFile(tmp,namafile);
rewrite(tmp,1);
AssignFile(buka,opendialog1.FileName);
reset(buka,1);
62
3. Proses enkripsi
Berikut baris-baris perintah untuk mengenkripsi berkas dokumen :
for ulang1:=1 to 3 do
for ulang2:=1 to 8 do
begin
tampung:=pkanan;
biner:=jumlahbinerdankunci(pkanan,kunci[ulang2]);
hexanya:=carihexanya(biner);
for i:=1 to 8 do
hexanya[i]:=sbox[i,hexanya[i]];
pkanan:='';
for i:=1 to 8 do
pkanan:=pkanan+hexatobiner(hexanya[i]);
a:=copy(pkanan,1,11);
b:=copy(pkanan,12,21);
long:=now;
i:=0;
repeat
begin
BlockRead(buka,buffer,128,recdata);
plaintext:='';
hit128:=0;
for ulang5:=1 to 128 do
begin
gauge1.Progress:=gauge1.Progress+1;
biner:=caribiner(buffer[ulang5]);
plaintext:=plaintext+biner;
if ulang5 mod 8=0 then
begin
pkiri:=copy(plaintext,1,32);pkanan:=copy(plaintext,33,32);
63
pkanan:=b+a;
hsl:='';
for i:=1 to length(pkanan) do
begin
if pkanan[i]=pkiri[i] then
hsl:=hsl+'0'
else
hsl:=hsl+'1';
end;
pkanan:=hsl;
pkiri:=tampung;
end;
end;
for ulang3:=8 downto 1 do
begin
tampung:=pkanan;
biner:=jumlahbinerdankunci(pkanan,kunci[ulang3]);
hexanya:=carihexanya(biner);
for i:=1 to 8 do
hexanya[i]:=sbox[i,hexanya[i]];
pkanan:='';
for i:=1 to 8 do
pkanan:=pkanan+hexatobiner(hexanya[i]);
a:=copy(pkanan,1,11);//dari bit 1 sebanyak 11 bit
b:=copy(pkanan,12,21); //dari 12 sebanyak 21 bit
pkanan:=b+a;
hsl:='';
for i:=1 to length(pkanan) do
begin
if pkanan[i]=pkiri[i] then
hsl:=hsl+'0'
else
hsl:=hsl+'1';
end;
pkanan:=hsl;
pkiri:=tampung;
end;
64
4. Tulis data terenkripsi
Berikut baris-baris perintah untuk menulis data telah dienkripsi ke berkas :
• Dekripsi : Jika akan melakukan proses dekripsi, user dapat memilih Menu
Dekripsi atau Ctrl-D. Selanjutnya akan muncul Form Dekripsi File.
Seperti pada Form Enkripsi File, sebelum melakukan dekripsi, user
terlebih dulu membuka file yang akan didekripsi dan memasukkan kunci
yang sama dengan kunci yang dimasukkan pada saat enkripsi. Setelah itu,
user dapat menekan tombol Dekrip untuk melakukan dekripsi file.
Selanjutnya user dapat menyimpan hasilnya. Tampilan Form Dekripsi File
dapat dilihat pada gambar 4.13.
str1:=pkanan+pkiri;
i:=0;
while i<>length(str1)do
begin
inc(i);
des:=des+str1[i];
if (i mod 8=0)or(i=length(str1))then
begin
inc(hit128);
buffer2[hit128]:=(binerkedesimal(des));
des:='';
end;
plaintext:='';
Blockwrite(tmp,buffer2,recdata,recdata2);
hit128:=0;
until (recdata =0)or(recdata<>recdata2);
closefile(buka);
closefile(tmp);
65
Gambar 4.13 Dekripsi File
Sama seperti pada Form Enkripsi, jika file dan atau kunci belum
dimasukkan, maka akan muncul pesan kesalahan ”Silakan masukkan File
dan atau Kunci terlebih dahulu.” Tampilan pesan kesalahan dapat dilihat
pada gambar 4.14.
Gambar 4.14 Pesan Peringatan Masukkan File dan atau Kunci
Jika file sudah dimasukkan namun kunci lebih dari 32 karakter, maka akan
muncul tampilan seperti gambar 4.15 di bawah ini :
Gambar 4.15 Pesan Peringatan Kunci Maksimal 32 Karakter
66
Jika kunci sudah dimasukkan, tetapi file diketik dalam textbox atau file
tidak ada dalam disk, maka akan tampil pesan seperti pada gambar 4.16.
Gambar 4.16 Pesan Kesalahan File yang Didekripsi Tidak Ada
Jika file yang dimasukkan bukan berekstensi .gost, maka akan tampil
pesan pada gambar 4.17 berikut.
Gambar 4.17 Pesan Peringatan Spesifikasi File yang Didekripsi
Untuk membuka file yang akan dienkripsi, user dapat menekan tombol
Buka File. Buka File berguna untuk mencari path dari file yang dicari.
Tampilan Buka File dapat dilihat pada gambar 4.18.
Gambar 4.18 Buka File
67
Jika proses dekripsi telah selesai, maka akan tampil pesan seperti gambar
4.19 di bawah ini :
Gambar 4.19 Pesan Informasi Proses Dekripsi Selesai
Setelah proses dekripsi sudah selesai, maka user dapat menyimpan dengan
menekan tombol Simpan. Tampilan Simpan File seperti pada gambar 4.20.
Gambar 4.20 Simpan File
Jika file sudah tersimpan, maka akan tampil pesan dimana user dapat
memilih apakah ingin melihat file hasil dekripsi saat itu juga atau tidak.
Tampilan Pesan Konfirmasi dapat dilihat pada gambar 4.21 di bawah ini:
Gambar 4.21 Pesan Konfirmasi Melihat Hasil Dekripsi
68
Jika ditekan yes, maka akan ditampilkan isi berkas yang telah didekripsi.
Beberapa proses yang terjadi ketika tombol Dekrip diklik :
Gambar 4.22 Proses pada Tombol Dekrip
69
Berikut isi program beberapa proses pada tombol Enkrip seperti yang telah
dijelaskan pada bab analisis dan perancangan :
1. Inisialisasi kunci dekripsi
Berikut baris-baris perintah untuk inisialisasi kunci :
2. Baca data terenkripsi
Berikut baris-baris perintah untuk baca data terenkripsi :
isi:=edit2.text;
for i:=1 to 8 do
kunci[i]:='';
j:=1;
for i:=1 to length(edit2.text) do
begin
kodeascii:=ord(isi[i]);
biner:=caribiner(kodeascii);
kunci[j]:=kunci[j]+biner;
if length(kunci[j])=32 then
inc(j);
end;
if j<=8 then
begin
for i:=length(kunci[j])+1 to 32 do //untuk kolom=32
kunci[j]:=kunci[j]+'0';
for k:=j+1 to 8 do //untuk baris=8
kunci[k]:='00000000000000000000000000000000';
end;
AssignFile(tmp,'C:\temp.txt');
rewrite(tmp,1);
AssignFile(buka,opendialog1.FileName);
reset(buka,1);
long:=now;
i:=0;
70
3. Proses dekripsi
Berikut baris-baris perintah untuk mendekripsi berkas dokumen :
for ulang2:=1 to 8 do
begin
tampung:=pkanan;
biner:=jumlahbinerdankunci(pkanan,kunci[ulang2]);
hexanya:=carihexanya(biner);
for i:=1 to 8 do
hexanya[i]:=sbox[i,hexanya[i]];
pkanan:='';
for i:=1 to 8 do
pkanan:=pkanan+hexatobiner(hexanya[i]);
a:=copy(pkanan,1,11);//dari bit 1 sebanyak 11 bit
b:=copy(pkanan,12,21); //dari 12 sebanyak 21 bit
pkanan:=b+a;
hsl:='';
for i:=1 to length(pkanan) do
begin
if pkanan[i]=pkiri[i] then
repeat
begin
BlockRead(buka,buffer,128,recdata);
plaintext:='';
hit128:=0;
for ulang5:=1 to 128 do
begin
gauge1.Progress:=gauge1.Progress+1;
biner:=caribiner(buffer[ulang5]);
plaintext:=plaintext+biner;
if ulang5 mod 8=0 then
begin
pkiri:=copy(plaintext,1,32);
pkanan:=copy(plaintext,33,32);
71
hsl:=hsl+'0'
else
hsl:=hsl+'1';
end;
pkanan:=hsl;
pkiri:=tampung;
end;
for ulang1:=1 to 3 do
for ulang3:=8 downto 1 do
begin
tampung:=pkanan;
biner:=jumlahbinerdankunci(pkanan,kunci[ulang3]);
hexanya:=carihexanya(biner);
for i:=1 to 8 do
hexanya[i]:=sbox[i,hexanya[i]];
for i:=1 to 8 do
begin
pkanan:='';
end;
for i:=1 to 8 do
pkanan:=pkanan+hexatobiner(hexanya[i]);
a:=copy(pkanan,1,11);//dari bit 1 sebanyak 11 bit
b:=copy(pkanan,12,21); //dari 12 sebanyak 21 bit
pkanan:=b+a;
hsl:='';
for i:=1 to length(pkanan) do
begin
if pkanan[i]=pkiri[i] then
hsl:=hsl+'0'
else
hsl:=hsl+'1';
end;
pkanan:=hsl;
pkiri:=tampung;
end;
72
4. Tulis data asli
Berikut baris-baris perintah untuk menulis data telah asli ke berkas :
• Bantuan : Form ini merupakan keterangan yang akan membantu user
dalam menggunakan program ini. Selain itu juga berisi penjelasan singkat
mengenai Algoritma Gost dan bagaimana cara menggunakan program ini.
Tampilan dapat dilihat pada gambar 4.23.
str1:=pkanan+pkiri;
i:=0;
while i<>length(str1)do
begin
inc(i);
des:=des+str1[i];
if (i mod 8=0)or(i=length(str1))then
begin
inc(hit128);
buffer2[hit128]:=(binerkedesimal(des));
des:='';
end;
end;
plaintext:='';
end;
end;
Blockwrite(tmp,buffer2,recdata,recdata2);
hit128:=0;
end;
until (recdata =0)or(recdata<>recdata2);
closefile(buka);
closefile(tmp);
73
Gambar 4.23 Form Bantuan
• Tentang Aku berisi tentang profil dan alamat email pembuat program,
dapat dilihat pada gambar 4.24.
Gambar 4.24 Form Tentang Aku
• Untuk keluar dari program, user dapat memilih Menu Keluar atau
menekan Ctrl-K. Kemudian tampil pesan pada gambar 4.25 di bawah ini.
Gambar 4.25 Pesan Konfirmasi Keluar Program
74
4.2 Uji Coba Program
Uji coba program dimaksudkan untuk mengetahui apakah program dapat
bekerja sesuai dengan Algoritma Gost. Hal ini dapat dilakukan dengan cara
membandingkan hasil program dengan hasil di teori. Berikut beberapa langkah
untuk melakukan enkripsi :
a) Membuat berkas .txt seperti gambar 4.26 berikut :
Gambar 4.26 Uji Coba Berkas Tes.txt
b) Membuka program dan menjalankan menu Enkripsi.
c) Tombol Buka ditekan untuk mencari file Tes.txt, lalu masukkan kunci ab.
d) Untuk melakukan enkripsi, tinggal menekan tombol Enkrip. Tampilan
seperti gambar 4.27 di bawah ini :
Gambar 4.27 Proses Enkripsi File
e) Setelah selesai, user dapat memilih apakah berkas asli akan dihapus atau
tidak. Tampilannya seperti gambar 4.28 berikut.
75
Gambar 4.28 Pesan Konfirmasi Enkripsi selesai
f) Membuka berkas hasil enkripsi Tes.gost seperti gambar 4.29 berikut :
Gambar 4.29 Hasil Enkripsi Berkas Tes.gost
g) Gambar di atas menunjukkan bahwa hasil program sama dengan teori.
Berikut beberapa langkah untuk dekripsinya :
a) Membuka program dan menjalankan menu Dekripsi. Tombol Buka
ditekan untuk mencari file Tes.gost, lalu masukkan kunci ab. Untuk
melakukan Dekripsi, tinggal menekan tombol Dekrip. Tampilan seperti
gambar 4.30 di bawah ini.
Gambar 4.30 Proses Dekripsi File
76
Gambar 4.31 Pesan Konfirmasi Dekripsi selesai
b) Menyimpan berkas hasil dekripsi dan diberi nama Tes_1.txt. Membuka
hasil dekripsi secara langsung setelah ada pesan seperti pada gambar 4.32 :
Gambar 4.32 Pesan Konfirmasi Melihat Hasil Dekripsi
c) Hasil dekripsi setelah ditekan Yes:
Gambar 4.33 Hasil Dekripsi Berkas Tes.txt
4.3 Hasil Uji Coba
Dari hasil uji coba (pada lampiran) dapat dijelaskan pada tabel sebagai berikut :
77
Tabel 4.1 Hasil Enkripsi Berkas Dokumen
No Nama Tipe Ukuranasli
Ukuranenkripsi(bytes)
Waktu(second)
Rasio(bytes/sec)
RerataWaktu
RerataRasio
1 Testxt1 txt 12232 12232 5.016 2424.0982 Testxt2 txt 19968 19968 8.177 2441.9713 Testxt3 txt 162528 162528 64.489 2520.2434 Testxt4 txt 405872 405872 160.625 2526.8295 Testxt5 txt 604608 604608 237.823 2542.2606 Testxt6 txt 887584 887584 348.427 2544.970
137.426 2500.061
7 Tesdoc1 doc 19968 19968 8.088 2468.8428 Tesdoc2 doc 73728 73728 29.224 2522.8579 Tesdoc3 doc 162304 162304 64.072 2533.15010 Tesdoc4 doc 406528 406528 159.911 2542.21411 Tesdoc5 doc 604672 604672 237.552 2545.43012 Tesdoc6 doc 887296 887296 348.469 2546.269
141.219 2526.460
13 Tesrtf1 rtf 11488 11488 4.781 2402.84414 Tesrtf2 rtf 19968 19968 8.083 2467.01215 Tesrtf3 rtf 162760 162760 64.479 2524.23216 Tesrtf4 rtf 406488 406488 160.510 2532.47717 Tesrtf5 rtf 604565 604565 237.879 2541.48118 Tesrtf6 rtf 886920 886920 348.932 2541.813
137.444 2501.643
Tabel 4.2 Hasil Dekripsi Berkas Dokumen
No Nama Tipe Ukuranenkripsi
Ukurandekripsi(bytes)
Waktu Rasio(bytes/sec)
RerataWaktu(sec)
RerataRasio
1 Testxt1 gost 12232 12232 4.999 2446.8892 Testxt2 gost 19968 19968 7.973 2504.4523 Testxt3 gost 162528 162528 64.485 2520.4004 Testxt4 gost 405872 405872 160.568 2527.7265 Testxt5 gost 604608 604608 238.719 2532.7186 Testxt6 gost 887584 887584 350.088 2535.316
137.276 2510.692
7 Tesdoc1 gost 19968 19968 8.031 2486.3658 Tesdoc2 gost 73728 73728 29.390 2508.6089 Tesdoc3 gost 162304 162304 64.438 2518.762
10 Tesdoc4 gost 406528 406528 161.083 2523.71711 Tesdoc5 gost 604672 604672 237.963 2541.03312 Tesdoc6 gost 887296 887296 347.687 2551.996
140.432 2520.127
13 Tesrtf1 gost 11488 11488 4.729 2429.26614 Tesrtf2 gost 19968 19968 7.989 2499.43615 Tesrtf3 gost 162760 162760 64.968 2505.23316 Tesrtf4 gost 406488 406488 161.005 2524.69117 Tesrtf5 gost 604565 604565 238.218 2537.86418 Tesrtf6 gost 886920 886920 346.75 2557.808
137.840 2519.049
78
Dari hasil uji coba dapat dianalisis beberapa hal yaitu :
1. Program Enkripsi Dekripsi Berkas Dokumen dengan Algoritma Gost ini
ternyata telah berjalan sesuai dengan algoritma yang ada dan dapat
berfungsi dengan baik untuk enkripsi dekripsi berkas dokumen bertipe txt,
doc, rtf.
2. Tidak ada perubahan ukuran berkas pada berkas asli baik setelah dikenai
proses enkripsi maupun proses dekripsi.
3. Semakin besar ukuran berkas makin lama pula waktu yang dibutuhkan
untuk proses enkripsi. Demikian pula yang terjadi pada proses dekripsi.
4.4 Kelebihan dan Kekurangan Program
Setelah melakukan uji coba beberapa berkas dokumen ke dalam program,
penulis memperoleh beberapa kelebihan dan kekurangan dari program yang
dibuat.
4.4.1. Kelebihan
Kelebihan program untuk enkripsi dekripsi berkas dokumen menggunakan
Algoritma Gost ini mempunyai beberapa kelebihan, antara lain:
1. Program dapat menampilkan secara langsung hasil proses dekripsi.
2. Program sederhana dan mudah digunakan (user friendly).
3. Program dapat menghapus berkas asli.
4. Program dapat menyimpan secara otomatis berkas hasil proses enkripsi.
5. Program dapat menampilkan informasi ukuran berkas secara otomatis.
79
6. Program dapat mengenkripsi dan mendekripsi gambar yang berada dalam
berkas dokumen bertipe doc.
4.4.2. Kekurangan
Program yang telah dibuat mempunyai kelemahan, antara lain:
1. Program hanya dapat mengenkripsi dan mendekripsi berkas dokumen
(.txt,.doc,.rtf) yang berukuran 8 bytes dan kelipatannya.
2. Program belum dapat melakukan penyimpanan kunci yang dipakai user
untuk proses enkripsi dan dekripsi.
3. Program belum dapat secara otomatis melakukan pembatalan proses
enkripsi maupun dekripsi bila berkas yang dimasukkan sudah terenkripsi
atau sudah didekripsi.
80
BAB V
PENUTUP
5.1 Kesimpulan
Kesimpulan dari pembuatan program enkripsi dekripsi berkas dokumen ini
adalah :
1) Algoritma Gost dapat mengenkripsi dan mendekripsi berkas dokumen
(.txt,.doc,.rtf) dengan benar. Hal ini ditunjukkan dari hasil uji coba yang
sesuai dengan perhitungan manualnya.
2) Program Enkripsi Dekripsi Berkas Dokumen menggunakan Algoritma
Gost dapat berjalan dengan baik untuk mengenkripsi dan mendekripsi
berkas dokumen (.txt,.doc,.rtf). Hal ini menunjukkan bahwa Algoritma
Gost dapat bekerja untuk enkripsi dekripsi berkas dokumen (.txt,.doc,.rtf).
3) Semakin besar ukuran berkas maka semakin lama waktu proses yang
dibutuhkan untuk proses enkripsi maupun dekripsi.
4) Tidak ada perubahan ukuran berkas pada berkas asli baik setelah dikenai
proses enkripsi maupun proses dekripsi.
5.2 Saran
Pembuatan program ini tentunya dapat dikembangkan lebih lanjut untuk
mengatasi beberapa kelemahan dari program ini dan dapat dipergunakan juga
untuk program aplikasi yang besar. Beberapa pengembangan yang dapat
dilakukan adalah :
81
1) Program dapat melakukan enkripsi dan dekripsi semua tipe dan ukuran
file.
2) Program dapat melakukan enkripsi dekripsi beberapa berkas dokumen
sekaligus yang kemudian disimpan dalam suatu berkas.
3) Program dapat mengetahui kunci yang dimasukkan ketika enkripsi,
sehingga jika pada saat didekripsi, user salah memasukkan kunci, maka
program akan membatalkan proses dekripsi.
4) Program dapat membatalkan proses enkripsi bila berkas yang dimasukkan
sudah terenkripsi. Jadi berkas hanya dapat dienkripsi sebanyak satu kali.
Begitu pula dengan proses dekripsi.
5) Program dapat melindungi berkas yang telah dienkripsi agar tidak dapat
diubah isinya.
82
DAFTAR PUSTAKA
Anonim. Handout Mata Kuliah Rekayasa Perangkat Lunak. FT USD.
Yogyakarta.
Anonim. 2006. http://www.cryptography.com. 2 September 2006.
Anonim. 2006. http://en.wikipedia.org/wiki/Substitution_box. 2 September 2006.
Anonim. 2006. http://en.wikipedia.org/wiki/GOST. 21 September 2006.
Iswanti. 2003. Sistem Keamanan Data dengan Metode Public Key Cryptography.
Penerbit ITB. Bandung.
Kurniawan, Yusuf. 2004. Kriptografi: Keamanan Internet dan Jaringan
Komunikasi. Penerbit Informatika. Bandung.
Madcoms. 2002. Pemrograman Borland Delphi 7. Penerbit Andi. Yogyakarta.
Polina, Agnes Maria, dan Siang, Jong Jek. 2005. Kiat Jitu Menyusun Skripsi
Jurusan Informatika / Komputer. Penerbit Andi. Yogyakarta.
Pranata, Antony. 1997. Pemrograman Borland Delphi 6. Edisi 4. Penerbit Andi.
Yogyakarta.
Raharjo, Budi. 2002. Keamanan Sistem Informasi Berbasis Internet. PT. Insan
Infonesia – Bandung & PT INDOCISC – Jakarta.
83
Schneier, Bruce. 1996. Applied Cryptography: Protocols, Algorithms, and Source
Code in C. Second Edition. John Wiley & Sons Inc. United States of
America.
Setiawan, Yudha. 2004. Trik & Tip Delphi. Penerbit Andi. Yogyakarta.
Sukmawan, Budi. 2006. http://www.bimacipta.com/gost.htm. 15 September 2006.
84
LAMPIRAN I
HASIL UJI COBA
A. Uji Coba Enkripsi Berkas Dokumen
1) Hasil uji coba enkripsi berkas berekstensi txt
Berkas txt yang dienkripsi antara lain :
o Testxt1.txt (12232 bytes)
o Testxt2.txt (19968 bytes)
o Testxt3.txt (162728 bytes)
o Testxt4.txt (405872 bytes)
o Testxt5.txt (604608 bytes)
o Testxt6.txt (887584 bytes)
Berikut tampilan hasil enkripsi untuk keenam berkas diatas :
85
86
2) Hasil uji coba enkripsi berkas berekstensi doc
Berkas doc yang dienkripsi antara lain :
o Tesdoc1.doc (19968 bytes)
o Tesdoc2.doc (73728 bytes)
o Tesdoc3.doc (162304 bytes)
o Tesdoc4.doc (406528 bytes)
o Tesdoc5.doc (604672 bytes)
o Tesdoc6.doc (887296 bytes)
Berikut tampilan hasil enkripsi untuk keenam berkas diatas :
87
88
89
3) Hasil uji coba enkripsi berkas berekstensi rtf
Berkas rtf yang dienkripsi antara lain :
o Tesrtf1.rtf (11488 bytes)
o Tesrtf2.rtf (19968 bytes)
o Tesrtf3.rtf (162760 bytes)
o Tesrtf4.rtf (406488 bytes)
o Tesrtf5.rtf (604565 bytes)
o Tesrtf6.rtf (886920 bytes)
Berikut tampilan hasil enkripsi untuk keenam berkas diatas :
90
91
B. Hasil Uji Coba Dekripsi Berkas Dokumen
1) Hasil uji coba dekripsi berkas berekstensi txt
Berkas txt yang didekripsi antara lain :
o Testxt1.gost (12232 bytes)
o Testxt2.gost (19968 bytes)
o Testxt3.gost (162728 bytes)
o Testxt4.gost (405872 bytes)
o Testxt5.gost (604608 bytes)
o Testxt6.gost (887584 bytes)
Berikut tampilan hasil dekripsi untuk keenam berkas diatas :
92
93
94
2) Hasil uji coba dekripsi berkas berekstensi doc
Berkas doc yang didekripsi antara lain :
o Tesdoc1.gost (19968 bytes)
o Tesdoc2.gost (73728 bytes)
o Tesdoc3.gost (162304 bytes)
o Tesdoc4.gost (406528 bytes)
o Tesdoc5.gost (604672 bytes)
o Tesdoc6.gost (887296 bytes)
Berikut tampilan hasil dekripsi untuk keenam berkas diatas :
95
96
3) Hasil uji coba dekripsi berkas berekstensi rtf
Berkas rtf yang didekripsi antara lain :
o Tesrtf1.gost (11488 bytes)
o Tesrtf2.gost (19968 bytes)
o Tesrtf3.gost (162760 bytes)
o Tesrtf4.gost (406488 bytes)
o Tesrtf5.gost (604565 bytes)
o Tesrtf6.gost (886920 bytes)
Berikut tampilan hasil dekripsi untuk keenam berkas diatas :
97
98
99
LAMPIRAN II
TABEL ASCII
100
LAMPIRAN III
LISTING PROGRAM
Program Splash Screen
unit splash;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls, ExtCtrls, jpeg, ComCtrls, Gauges;type TForm1 = class(TForm) Label1: TLabel; Timer1: TTimer; Label2: TLabel; Label5: TLabel; Image5: TImage; Image2: TImage; Bevel1: TBevel; Label3: TLabel; Label7: TLabel; Timer2: TTimer; Image1: TImage; Label4: TLabel; procedure Timer1Timer(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Timer2Timer(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; during:integer;implementationuses menu_utama;{$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject);beginduring:=during+1;if during=2 thenbeginform2.show;form1.Hide; end;end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);beginform1.close;end;end.
101
Program Main Form
unit menu_utama;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms, Dialogs, Menus, ExtCtrls, ComCtrls, jpeg, StdCtrls;type TForm2 = class(TForm) MainMenu1: TMainMenu; StatusBar1: TStatusBar; Timer1: TTimer; Timer2: TTimer; Label1: TLabel; Label2: TLabel; Enkripsi1: TMenuItem; Dekripsi1: TMenuItem; bantu1: TMenuItem; Keluar1: TMenuItem; aku1: TMenuItem; Label4: TLabel; Image3: TImage; Image1: TImage; Image4: TImage; Label3: TLabel; Bevel1: TBevel; Image2: TImage; procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure Keluar1Click(Sender: TObject); procedure Enkripsi1Click(Sender: TObject); procedure Dekripsi1Click(Sender: TObject); procedure aku1Click(Sender: TObject); procedure bantu1Click(Sender: TObject); Boolean); private { Private declarations } public { Public declarations } end;var Form2: TForm2; waktu: string;implementation uses enkripsi, programmer, help, dekripsi;{$R *.dfm}procedure TForm2.Timer1Timer(Sender: TObject);begin Waktu := TimeToStr(Date); StatusBar1.Panels[1].Text := FormatDateTime(' dddd, dd mmmm yyyy',Date)end;
procedure TForm2.Enkripsi1Click(Sender: TObject);begin Form3.ShowModal;end;
procedure TForm2.bantu1Click(Sender: TObject);begin
102
Form5.ShowModal;end;
procedure TForm2.Dekripsi1Click(Sender: TObject);begin Form4.ShowModal;end;
procedure TForm2.Timer2Timer(Sender: TObject);begin Waktu := DateToStr(Time); StatusBar1.Panels[2].Text := FormatDateTime(' hh:mm:ss WIB', Time)end;
procedure TForm2.Keluar1Click(Sender: TObject);beginif(messagebox(0,'Anda ingin keluar dari program?','Confirmation',MB_YESNO+MB_ICONQUESTION))=IDYES thenbegin postquitmessage(0);exit;end;end;
procedure TForm2.aku1Click(Sender: TObject);beginform6.ShowModal;end;end.
Program Enkripsi File
unit enkripsi;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms,Dialogs, StdCtrls, Buttons, ExtDlgs, ComCtrls, ExtCtrls, Gauges,jpeg,shellAPI;typehexa8=array[1..8] of byte; TForm3 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Bevel2: TBevel; Keluar: TBitBtn; Enkrip: TBitBtn; Gauge1: TGauge; OpenDialog1: TOpenDialog; Openfile: TBitBtn; Image1: TImage; Waktu: TLabel; Edit3: TEdit; Size: TLabel; procedure KeluarClick(Sender: TObject); procedure OpenfileClick(Sender: TObject); procedure EnkripClick(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public
103
{ Public declarations } end;varForm3: TForm3;plaintext : string[64];pkiri,pkanan : string[32];kunci : array[1..8] of string;sbox:array[1..8,0..15] of byte;hexanya:hexa8;tampung:string;implementationuses splash; {$R *.dfm}function caribiner(x:word):string;var biner,bin:string;var sisa,i,j:integer;beginbiner:=''; while x<>0 do begin sisa:=x mod 2; biner:=biner+inttostr(sisa); x:=x div 2; end;
if length(biner)=0 thenbiner:=biner+'00000000';if length(biner)=1 thenbiner:=biner+'0000000';if length(biner)=2 thenbiner:=biner+'000000';if length(biner)=3 thenbiner:=biner+'00000';if length(biner)=4 thenbiner:=biner+'0000';if length(biner)=5 thenbiner:=biner+'000';if length(biner)=6 thenbiner:=biner+'00';if length(biner)=7 thenbiner:=biner+'0';bin:='';for i:=8 downto 1 dobeginbin:=bin+biner[i];end;caribiner:=bin;end;
function caribiner32(x:word):string;var biner,bin:string;sisa,i,j:integer;beginbiner:=''; while x<>0 do begin sisa:=x mod 2; biner:=biner+inttostr(sisa); x:=x div 2; end;
for i:=length(biner)+1 to 32 dobiner:=biner+'0';
104
bin:='';for i:=32 downto 1 dobeginbin:=bin+biner[i];end;caribiner32:=bin;end;
function jumlahbinerdankunci(biner1,biner2:string):string;var sisa,i,total,pkt,hsl:integer;hasil,hasil1:string;jml,a,b:integer;beginsisa:=0;hasil:='';for i:=length(biner1)downto 1 dobegina:=strtoint(biner1[i]);b:=strtoint(biner2[i]);jml:=a+b+sisa;end;
function carihexanya(biner:string):hexa8;var hexa1,hexa2:integer;begincarihexa(copy(biner,1,8),hexa1,hexa2);carihexanya[1]:=hexa1;carihexanya[2]:=hexa2;carihexa(copy(biner,9,16),hexa1,hexa2);carihexanya[3]:=hexa1;carihexanya[4]:=hexa2;carihexa(copy(biner,17,24),hexa1,hexa2);carihexanya[5]:=hexa1;carihexanya[6]:=hexa2;carihexa(copy(biner,25,32),hexa1,hexa2);carihexanya[7]:=hexa1;carihexanya[8]:=hexa2;end;
procedure TForm3.OpenfileClick(Sender: TObject);var ekstensi:string;begin if (OpenDialog1.Execute) thenbeginedit1.Text:=OpenDialog1.FileName;Enkrip.Enabled:=true;gauge1.Progress:=0;edit3.Text:=formatdatetime(' hh:mm:ss:zzz', 0); endelsemessagebox(0,'File yang dienkripsi harus berekstensi .txt, .doc, dan.rtf.','Warning',MB_OK+MB_ICONEXCLAMATION); end; end;
procedure TForm3.EnkripClick(Sender: TObject);varisi,biner: string;i,j,k,ulang2,ulang1,ulang3,ulang5,hit128: integer;awal,akhir:TDatetime;kodeascii:word;a,b,hsl,str1,des,namafile:string;
105
buka,tmp:file;buffer,buffer2:array[1..128] of byte;recdata,recdata2:integer;SearchRec: TSearchRec;
begin if(edit1.text='') or(edit2.text='') thenbegin messagebox(0,'Silakan masukkan File dan atau Kunci terlebih dahulu.', 'Warning',MB_OK+MB_ICONEXCLAMATION); edit2.Text:=''; end
else if length(edit2.text) <= 32 then begin Keluar.Enabled:=false; openfile.Enabled:=false; enkrip.Enabled:=false; awal:=(now);
//inisialisasi kunciisi:=edit2.text;for i:=1 to 8 dokunci[i]:='';j:=1;if length(kunci[j])=32 then //jika kolom sudah 32 maka pindah bariskebawahnya inc(j);end;
if j<=8 thenbeginfor i:=length(kunci[j])+1 to 32 do //untuk kolom=32 kunci[j]:=kunci[j]+'0'; for k:=j+1 to 8 do //untuk baris=8 kunci[k]:='00000000000000000000000000000000';end;//awal proses filenamafile:=copy(opendialog1.FileName,1,length(opendialog1.filename)-3);namafile:=namafile+'gost';
//buka fileAssignFile(tmp,namafile);rewrite(tmp,1);AssignFile(buka,opendialog1.FileNamereset(buka,1);i:=0;repeat BlockRead(buka,buffer,128,recdata); inc(i); until (recdata=0); reset(buka,1);Gauge1.MaxValue:=i*16;
//baca filerepeatBlockRead(buka,buffer,128,recdata); plaintext:=''; //plaintext kosonghit128:=0;for ulang5:=1 to 128 dobegingauge1.Progress:=gauge1.Progress+1; //awal prulangan forulang 5biner:=caribiner(buffer[ulang5]);
106
plaintext:=plaintext+biner;if ulang5 mod 8=0 thenbegin //awal jika ulang5 dibagi 8 sisa 0//akhir proses filepkiri:=copy(plaintext,1,32);pkanan:=copy(plaintext,33,32);//perulangan enkripsifor ulang1:=1 to 3 dobegin //awal perulangan ulang1 for ulang2:=1 to 8 do begin //awal perulangan ulang2 tampung:=pkanan; //mod 232 biner:=jumlahbinerdankunci(pkanan,kunci[ulang2]); hexanya:=carihexanya(biner);
for i:=1 to 8 do hexanya[i]:=sbox[i,hexanya[i]]; pkanan:=''; for i:=1 to 8 do pkanan:=pkanan+hexatobiner(hexanya[i]); a:=copy(pkanan,1,11);//dari bit 1 sebanyak 11 bit b:=copy(pkanan,12,21); //dari 12 sebanyak 21 bit pkanan:=b+a;
//XOR hsl:=''; for i:=1 to length(pkanan) do begin //awal ulang i if pkanan[i]=pkiri[i] then hsl:=hsl+'0' else hsl:=hsl+'1'; end; //akhir ulang i pkanan:=hsl; pkiri:=tampung; end; //akhir dari ulang 2end; //akhir ulang1 for ulang3:=8 downto 1 do begin //awal perulangan ulang3 tampung:=pkanan; //mod 232 biner:=jumlahbinerdankunci(pkanan,kunci[ulang3]); hexanya:=carihexanya(biner);
for i:=1 to 8 do hexanya[i]:=sbox[i,hexanya[i]]; pkanan:=''; for i:=1 to 8 do pkanan:=pkanan+hexatobiner(hexanya[i]); a:=copy(pkanan,1,11);//dari bit 1 sebanyak 11 bit b:=copy(pkanan,12,21); //dari 12 sebanyak 21 bit pkanan:=b+a;
//XOR hsl:=''; for i:=1 to length(pkanan) do begin //awal perulangan i if pkanan[i]=pkiri[i] then hsl:=hsl+'0' else hsl:=hsl+'1'; end; //akhir perulangan i
107
pkanan:=hsl; pkiri:=tampung; end; //akhir erulangan ulang3
//penggabungan plaintext dalam bentuk biner str1:=pkanan+pkiri;i:=0; //counter i=0 bacakarakterwhile i<>length(str1)dobegin //awal perulangan whileinc(i);//baca satu angka di urutan ides:=des+str1[i];if (i mod 8=0)or(i=length(str1))thenbegin //awal ifinc(hit128); //counter masukin bufer2buffer2[hit128]:=(binerkedesimal(des));des:='';end; //akhir ifend; //akhir perulangan whileplaintext:='';end; //akhir dari jika ulang5di bagi 8 sisa 0end; //akhir perulangan for ulang5 Blockwrite(tmp,buffer2,recdata,recdata2); hit128:=0;until (recdata =0)or(recdata<>recdata2); closefile(buka);closefile(tmp); akhir:=now-awal; edit3.Text:=formatdatetime(' hh:mm:ss:zzz', akhir);
size.Visible:=true; Enkrip.Enabled:=false; openfile.Enabled:=true; Keluar.Enabled:=true; end; //end procedure
procedure TForm3.KeluarClick(Sender: TObject);begin close; end;end.
Program Dekripsi File
unit dekripsi;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls, Buttons, Gauges, ExtCtrls, jpeg,ShellAPI;typehexa8=array[1..8] of byte; TForm4 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Bevel2: TBevel; Gauge1: TGauge; Edit3: TEdit; Saveas: TBitBtn; SaveDialog1: TSaveDialog; Keluar: TBitBtn;
108
Openfile: TBitBtn; OpenDialog1: TOpenDialog; Dekrip: TBitBtn; Image1: TImage; Image2: TImage; Label3: TLabel; Size: TLabel; procedure OpenfileClick(Sender: TObject); procedure SaveasClick(Sender: TObject); procedure DekripClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure KeluarClick(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form4: TForm4; plaintext : string[64];pkiri,pkanan : string[32];kunci : array[1..8] of string;sbox:array[1..8,0..15] of byte;hexanya:hexa8;tampung:string;implementation{$R *.dfm}function caribiner(x:word):string;var biner,bin:string;var sisa,i,j:integer;beginbiner:=''; while x<>0 do begin sisa:=x mod 2; biner:=biner+inttostr(sisa); x:=x div 2; end;
if length(biner)=0 thenbiner:=biner+'00000000';if length(biner)=1 thenbiner:=biner+'0000000';if length(biner)=2 thenbiner:=biner+'000000';if length(biner)=3 thenbiner:=biner+'00000';if length(biner)=4 thenbiner:=biner+'0000';if length(biner)=5 thenbiner:=biner+'000';if length(biner)=6 thenbiner:=biner+'00';if length(biner)=7 thenbiner:=biner+'0';bin:='';for i:=8 downto 1 dobeginbin:=bin+biner[i];end;caribiner:=bin;end;
109
function caribiner32(x:word):string;var biner,bin:string;var sisa,i,j:integer;beginbiner:=''; while x<>0 do begin sisa:=x mod 2; biner:=biner+inttostr(sisa); x:=x div 2; end;
for i:=length(biner)+1 to 32 dobiner:=biner+'0';bin:='';for i:=32 downto 1 dobeginbin:=bin+biner[i];end;caribiner32:=bin;end;
function jumlahbinerdankunci(biner1,biner2:string):string;var sisa,i,total,pkt,hsl:integer;hasil,hasil1:string;jml,a,b:integer;beginsisa:=0;hasil:='';for i:=length(biner1)downto 1 dobegina:=strtoint(biner1[i]);b:=strtoint(biner2[i]);jml:=a+b+sisa; end;end;
function carihexanya(biner:string):hexa8;var hexa1,hexa2:integer;begincarihexa(copy(biner,1,8),hexa1,hexa2);carihexanya[1]:=hexa1;carihexanya[2]:=hexa2;carihexa(copy(biner,9,16),hexa1,hexa2);carihexanya[3]:=hexa1;carihexanya[4]:=hexa2;carihexa(copy(biner,17,24),hexa1,hexa2);carihexanya[5]:=hexa1;carihexanya[6]:=hexa2;carihexa(copy(biner,25,32),hexa1,hexa2);carihexanya[7]:=hexa1;carihexanya[8]:=hexa2;end;
procedure TForm4.DekripClick(Sender: TObject);varisi,biner: string;i,j,k,ulang1,ulang2,ulang3,ulang5: integer;buka,tmp:file;kodeascii:word;awal,akhir:TdateTime;buffer,buffer2:array[1..128] of byte;a,b,hsl,str1,des:string;
110
recdata,recdata2,hit128:integer; SearchRec: TSearchRec;
begin if(edit1.text='') or(edit2.text='') thenbegin if (messagebox(0,'Silakan masukkan File dan atau Kunci terlebihdahulu.', 'Warning',MB_OK+MB_ICONEXCLAMATION))=IDYES then edit2.Text:=''; end
openfile.Enabled:=false; dekrip.Enabled:=false; awal:=(now); isi:=edit2.text;for i:=1 to 8 dokunci[i]:='';j:=1;if length(kunci[j])=32 then //jika kolom sudah 32 maka pindah bariskebawahnya inc(j);end;
if j<=8 thenbeginfor i:=length(kunci[j])+1 to 32 do //untuk kolom=32 kunci[j]:=kunci[j]+'0'; for k:=j+1 to 8 do //untuk baris=8 kunci[k]:='00000000000000000000000000000000';end;
AssignFile(tmp,'C:\temp.txt');rewrite(tmp,1);AssignFile(buka,opendialog1.FileName);reset(buka,1);i:=0;repeat BlockRead(buka,buffer,128,recdata); inc(i); until (recdata=0); reset(buka,1);Gauge1.MaxValue:=i*16;
repeatBlockRead(buka,buffer,128,recdata);plaintext:='';hit128:=0;for ulang5:=1 to 128 dobegingauge1.Progress:=gauge1.Progress+1;biner:=caribiner(buffer[ulang5]);plaintext:=plaintext+biner;if ulang5 mod 8=0 thenbegin
pkiri:=copy(plaintext,1,32);pkanan:=copy(plaintext,33,32);for ulang2:=1 to 8 dobegintampung:=pkanan;//mod 232biner:=jumlahbinerdankunci(pkanan,kunci[ulang2]);
111
hexanya:=carihexanya(biner);
for i:=1 to 8 dohexanya[i]:=sbox[i,hexanya[i]];pkanan:='';for i:=1 to 8 dopkanan:=pkanan+hexatobiner(hexanya[i]);a:=copy(pkanan,1,11);//dari bit 1 sebanyak 11 bitb:=copy(pkanan,12,21); //dari 12 sebanyak 21 bitpkanan:=b+a;
//XORhsl:='';for i:=1 to length(pkanan) do begin if pkanan[i]=pkiri[i] then hsl:=hsl+'0' else hsl:=hsl+'1'; end; pkanan:=hsl; pkiri:=tampung;end;
for ulang1:=1 to 3 dofor ulang3:=8 downto 1 dobegintampung:=pkanan;//mod 232biner:=jumlahbinerdankunci(pkanan,kunci[ulang3]);hexanya:=carihexanya(biner);
for i:=1 to 8 dohexanya[i]:=sbox[i,hexanya[i]];
for i:=1 to 8 dobeginpkanan:='';end;for i:=1 to 8 dopkanan:=pkanan+hexatobiner(hexanya[i]);a:=copy(pkanan,1,11);//dari bit 1 sebanyak 11 bitb:=copy(pkanan,12,21); //dari 12 sebanyak 21 bitpkanan:=b+a;
//XORhsl:='';for i:=1 to length(pkanan) do begin if pkanan[i]=pkiri[i] then hsl:=hsl+'0' else hsl:=hsl+'1'; end; pkanan:=hsl; pkiri:=tampung;end;str1:=pkanan+pkiri;i:=0;while i<>length(str1)dobegininc(i);des:=des+str1[i];
112
if (i mod 8=0) or (i=length(str1))thenbegininc(hit128);buffer2[hit128]:=(binerkedesimal(des));des:='';end;end;plaintext:='';end;end;Blockwrite(tmp,buffer2,recdata,recdata2); hit128:=0;until (recdata =0)or(recdata<>recdata2); closefile(buka);closefile(tmp);
messagebox(0,'Proses Dekripsi telahselesai.','Confirmation',MB_OK+MB_ICONASTERISK); Saveas.Enabled:=true; openfile.Enabled:=true; Keluar.Enabled:=false; Dekrip.Enabled:=false; end;end;
procedure TForm4.OpenfileClick(Sender: TObject);var ekstensi:string;beginif opendialog1.execute then //untuk mencari letak file (path)beginedit1.Text:=opendialog1.filename; Dekrip.Enabled:=true; gauge1.Progress:=0;edit3.Text:=formatdatetime(' hh:mm:ss:zzz', 0); end;end;end;
procedure TForm4.SaveasClick(Sender: TObject);vartmp,simpan:file;buffer:array[1..128] of byte;recdata,recdata2:integer;ekstensi,namafile:string;beginif savedialog1.execute then //untuk mencari letak file (path)beginassignfile(tmp,'C:\temp.txt');reset(tmp,1); //bacaassignfile(simpan,savedialog1.FileName);rewrite(simpan,1);repeatbeginBlockRead(tmp,buffer,128,recdata);Blockwrite(simpan,buffer,recdata,recdata2);end;until(recdata < 128)or(recdata<>recdata2);closefile(tmp);closefile(simpan); size.Visible:=true; Keluar.Enabled:=false;openfile.Enabled:=true;end;
113
procedure TForm4.KeluarClick(Sender: TObject);beginclose;end;end.
Program Bantuan
unit bantuan;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms, Dialogs, StdCtrls, jpeg, ExtCtrls, Buttons;type TForm5 = class(TForm) BitBtn1: TBitBtn; Label1: TLabel; Image2: TImage; Bevel2: TBevel; Image1: TImage; Memo1: TMemo; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form5: TForm5;implementation{$R *.dfm}procedure TForm5.BitBtn1Click(Sender: TObject);beginExit;end;end.
Program Tentang Aku
unit tentang_aku;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,Forms,Dialogs, jpeg, ExtCtrls, StdCtrls,shellAPI;type TForm6 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Image3: TImage; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label10: TLabel; Label11: TLabel; Bevel2: TBevel;
114
Image2: TImage; Label8: TLabel; Timer1: TTimer; Image4: TImage; Image1: TImage; Bevel3: TBevel; Bevel1: TBevel; Label9: TLabel; procedure Timer1Timer(Sender: TObject); procedure Label9Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form6: TForm6;implementation{$R *.dfm}procedure TForm6.Timer1Timer(Sender: TObject);beginif label8.Visible=true thenlabel8.Visible:=falseelselabel8.Visible:=true;end;end.