implementasi enkripsi dan dekripsi … · random key is generated using a random num ber generator,...

146
i IMPLEMENTASI ENKRIPSI DAN DEKRIPSI DOKUMEN MENGGUNAKAN ALGORITMA ONE TIME PAD DENGAN PEMBANGKIT BILANGAN ACAK MERSENNE TWISTER Skripsi Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika Oleh: Fidelis Asterina Surya Prasetya 105314021 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2016 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Upload: buique

Post on 16-Aug-2018

276 views

Category:

Documents


14 download

TRANSCRIPT

Page 1: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

i

IMPLEMENTASI ENKRIPSI DAN DEKRIPSI

DOKUMEN MENGGUNAKAN ALGORITMA ONE

TIME PAD DENGAN PEMBANGKIT BILANGAN

ACAK MERSENNE TWISTER

Skripsi

Diajukan Untuk Memenuhi Salah Satu Syarat

Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika

Oleh:

Fidelis Asterina Surya Prasetya

105314021

PROGRAM STUDI TEKNIK INFORMATIKA

JURUSAN TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2016

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 2: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

ii

IMPLEMENTATION CONVENTIONAL

ENCRYPTION ALGORITHM USING ONE TIME PAD

WITH THE MERSENNE TWISTER RANDOM

NUMBER GENERATOR

A Thesis

Presented as Partial Fulfillment of the Requirements

To Obtain the Sarjana Komputer Degree

In Informatics Engineering Study Program

By:

Fidelis Asterina Surya Prasetya

105314021

INFORMATICS ENGINEERING STUDY PROGRAM

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2016

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 3: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 4: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 5: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

HALAMAN MOTTO

“Never Give Up, God Never Give Up On You”

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 6: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 7: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 8: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

ABSTRAK

Pada dasarnya melakukan pengiriman data tanpa melakukan pengamanan

pada konten dari data yang dikirim, dapat menyebabkan adanya penyadapan pada

jalur pengirimannya. Data penting yang berformat .txt mudah sekali untuk disadap

dan data berformat .doc dapat disandikan menggunakan password namun fitur

tersebut memiliki kelemahan yaitu adanya aplikasi yang dapat digunakan untuk

membobol file yang telah terenkripsi. Untuk itulah peranan teknologi keamanan

informasi benar - benar dibutuhkan. Salah satu teknik untuk pengamanan data

adalah dengan menggunakan algoritma penyandian data.

Algoritma One Time Pad merupakan algoritma sederhana dan unbreakable

dikarenakan algoritma One Time Pad memiliki barisan kunci acak yang

ditambahkan ke pesan plaintext yang tidak acak untuk menghasilkan chipertext

yang seluruhnya acak. Kunci acak tersebut dibangkitkan menggunakan metode

pembangkit bilangan acak antara lain Mersenne Twister. Mersenne Twister

menghasilkan bilangan acak yang memiliki distribusi yang sangat bagus,

pembangkitan bilangan yang sangat cepat dan menggunakan memori yang efisien.

Pada tugas akhir ini penulis mencari tahu presentase keberhasilan

implementasi algoritma One Time Pad untuk mengenkripsi dan mendekripsi berkas

dokumen dalam bentuk .txt,.doc.

Hasil penelitian yang dilakukan sebanyak 10 pengujian memperlihatkan

bahwa presentase keberhasilan implementasi algoritma One Time Pad untuk

mengenkripsi dan mendekripsi berkas dokumen dalam bentuk .txt,.doc adalah

100% serta lama proses enkripsi dekripsi didasarkan pada randomnya kunci acak

yang digunakan dalam proses tersebut.

Kata Kunci : kriptografi, Mersenne Twister, One Time Pad

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 9: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

ABSTRACT

Basically perform data transmission without providing security on the

content of the data sent, may cause tapping on shipping lanes. Important data format

easy to be tapped .txt and .doc formatted data can be encrypted using a password

but the feature has the disadvantage of their application that can be used to break

into files that have been encrypted. For that role of information security technology

really - really needed. One technique for data security is to use the data encryption

algorithms.

One Time Pad algorithm is an algorithm because the algorithm is simple

and unbreakable One Time Pad has rows of random keys that are added to the

plaintext message that is not random to produce ciphertext which is entirely

random. Random key is generated using a random number generator, among others

Mersenne Twister. Mersenne Twister random number which has resulted in a very

good distribution, generation numbers are very fast and uses memory efficiently.

In this thesis the author to find out the percentage of successful

implementation of One Time Pad algorithm to encrypt and decrypt the document

file in the form of .txt, .doc.

Results of research conducted as many as 10 test showed that the percentage

of successful implementation of One Time Pad algorithm to encrypt and decrypt

the document file in the form of .txt, .doc is 100% and the long process of

encryption decryption randomnya based on random keys that are used in the

process.

Keywords: cryptography, Mersenne Twister, One Time Pad

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 10: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

KATA PENGANTAR

Puji dan syukur kepada Tuhan Yesus Kristus, atas segala berkat dan karunia

sehingga penulis dapat menyelesaikan penelitian tugas akhir dengan judul

“Implementasi Enkripsi dan Dekripsi Dokumen Menggunakan Algoritma One

Time Pad Dengan Pembangkit Bilangan Acak Mersenne Twister” dengan baik.

Tugas ini ditulis sebagai salah satu syarat memperoleh gelar sarjana komputer

program studi Teknik Informatika, Fakultas Sains dan Teknologi Universitas

Sanata Dharma.

Penelitian ini tidak dapat berjalan dengan baik tanpa adanya dukungan,

semangat, motivasi dan bantuan dalam bentuk apapun yang telah diberikan oleh

banyak pihak. Untuk itu penulis mengucapkan terimakasih yang sebesar-besarnya

kepada:

1. Tuhan Yesus Kristus, dan Bunda Maria, telah memberkati serta

membimbing penulis sehingga dapat menyelesaikan tugas akhir ini.

2. Ibu Paulina Heruningsih Prima Rosa, S.Si., M.Sc. selaku Dekan Fakultas

Sains dan Teknologi.

3. Ibu Dr. Anastasia Rita Widiarti, M.Kom selaku Ketua Program Studi Teknik

Informatika.

4. Ibu Dr. Anastasia Rita Widiarti, M.Kom selaku dosen pembimbing yang

telah dengan sabar membimbing dan memberikan kesabaran, waktu,

kebaikan, dan motivasi.

5. Bapak Bambang Soelistijanto, Ph.D dan Bapak Eko Hari Permadi,S.Si.,

M.Kom selaku dosen penguji atas kritik dan saran yang telah diberikan.

6. Ibu Agnes Maria Polina S.Kom., M.Sc. selaku Dosen Pembimbing

Akademik.

7. Seluruh dosen yang mendidik dan memberikan ilmu pengetahuan

berharga selama penulis belajar di Universitas Sanata Dharma

Yogyakarta.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 11: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

8. Kedua orang tua tercinta YB. Suryadi dan Tri Yuli Prasetyaningsih.

Terimakasih untuk setiap doa, kasih sayang, perhatian, dan dukungan

yang selalu diberikan kepada saya.

9. Adik tersayang Balissa Rosarina Surya Prasetya. Terimakasih untuk

dukungan yang selalu diberikan kepada saya.

10. Engelbert Eric dan Felisitas Brillianti. Terimakasih untuk segala bantuan

yang selalu diberikan kepada saya.

11. Kristoforus Sugiarto Adji Soenarso, S.Farm, Apt. Terimakasih untuk

segala dukungan dan bantuan yang selalu diberikan.

12. Verena Pratita Adji, Felisitas Brillianti, Ria Riska Topurmera, dan

Yustina Ayu. Terimakasih untuk persahabatan serta dukungan kalian.

13. Seluruh teman-teman kuliah Teknik Informatika 2010 (HMPS).

Terimakasih untuk kebersamaan kita selama menjalani masa

perkuliahan.

14. Pihak-pihak lain yang telah membantu penulis dalam menyelesaikan

tugas akhir ini, yang tidak dapat disebutkan satu per satu.

Penelitian tugas akhir ini masih memiliki banyak kekurangan. Untuk itu

penulis sangat membutuhkan kritik dan saran untuk perbaikan dimasa yang akan

datang. Semoga penelitian tugas akhir ini dapat membawa manfaat bagi semua

pihak.

Yogyakarta, 18 Januari 2016

Fidelis Asterina Surya P

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 12: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

DAFTAR ISI

HALAMAN JUDUL ........................................................................................... i

HALAMAN PERSETUJUAN ........................................................................... iii

HALAMAN PENGESAHAN ............................................................................ iv

HALAMAN MOTTO .......................................................................................... v

PERNYATAAN KEASLIAN KARYA .............................................................. vi

PERNYATAAN PERSETUJUAN PUBLIKASI ................................................ vii

ABSTRAK ..................................................................................................... viii

ABSTRACT ...................................................................................................... ix

KATA PENGANTAR .........................................................................................x

DAFTAR ISI ..................................................................................................... xii

DAFTAR GAMBAR ......................................................................................... xv

DAFTAR TABEL ............................................................................................ xvi

BAB I PENDAHULUAN .................................................................................... 1

1.1 Latar Belakang .............................................................................................. 1

1.2 Rumusan Masalah ......................................................................................... 2

1.3 Tujuan ........................................................................................................... 2

1.4 Batasan Masalah ........................................................................................... 3

1.5 Metodologi Penelitian ................................................................................... 3

1.6 Sistematika Penulisan .................................................................................... 4

BAB II LANDASAN TEORI .............................................................................. 5

2.1 Kriptografi ..................................................................................................... 5

2.2 Komponen Kriptografi ................................................................................... 6

2.3 Kunci Simetris dan Asimetris ......................................................................... 7

2.4 Algoritma One Time Pad ............................................................................... 8

2.4.1 Proses Enkripsi dan Dekripsi ................................................................ 8

2.5 Pembangkit Bilangan Acak ............................................................................ 9

2.6 Pembangkit Bilangan Acak Semu .................................................................. 9

2.7 Mersenne Twister ......................................................................................... 11

BAB III ANALISA DAN PERANCANGAN .................................................... 13

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 13: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

3.1 Enkripsi Pada One Time Pad ........................................................................ 13

3.1.1 Kebutuhan Input ................................................................................. 13

3.1.2 Kebutuhan Proses ............................................................................... 13

3.1.3 Kebutuhan Output .............................................................................. 13

3.2 Dekripsi Pada One Time Pad ........................................................................ 13

3.2.1 Kebutuhan Input ................................................................................. 13

3.2.2 Kebutuhan Proses ............................................................................... 13

3.2.3 Kebutuhan Output .............................................................................. 14

3.3 Diagram Alir Sistem .................................................................................... 14

3.3.1 Diagram Alir Enkripsi ........................................................................ 14

3.3.2 Diagram Alir Dekripsi ........................................................................ 15

3.4 Analisis Algoritma One Time Pad ................................................................ 16

3.4.1 Algoritma Enkripsi ............................................................................. 16

3.4.2 Algoritma Dekripsi ............................................................................. 18

3.4.3 Algoritma Mersenne Twister .............................................................. 20

3.5 Perancangan Antar Muka ............................................................................. 21

3.5.1 Tampilan Halaman Awal .................................................................... 21

3.5.2 Tampilan Halaman Enkripsi ............................................................... 21

3.5.3 Tampilan Halaman Dekripsi ............................................................... 22

3.6 Rancangan Input Dokumen .......................................................................... 23

3.6.1 Berformat .txt ..................................................................................... 23

3.6.2 Berformat .doc ................................................................................... 24

BAB IV HASIL DAN PEMBAHASAN ............................................................ 25

4.1 Implementasi Antar Muka ............................................................................ 25

4.1.1 Implementasi Halaman Awal .............................................................. 25

4.1.2 Implementasi Halaman Enkripsi ......................................................... 26

4.1.3 Implementasi Halaman Dekripsi ......................................................... 28

4.2 Hasil Pengujian ............................................................................................ 34

4.3 Pembahasan ................................................................................................. 38

4.3.1 Enkripsi .............................................................................................. 38

4.3.2 Dekripsi ............................................................................................. 40

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 14: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

4.4 Analisa ......................................................................................................... 42

4.5 Kelebihan Algoritma One Time Pad ............................................................. 44

4.6 Kekurangan Algoritma One Time Pad .......................................................... 44

BAB V KESIMPULAN DAN SARAN.............................................................. 45

5.1 Kesimpulan .................................................................................................. 45

5.2 Saran ............................................................................................................ 45

DAFTAR PUSTAKA ........................................................................................ 46

LAMPIRAN ...................................................................................................... 47

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 15: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

DAFTAR GAMBAR

Gambar 2.1 Enkripsi Dekeripsi Sederhana ........................................................... 5

Gambar 2.2 Enkripsi dan Dekripsi dengan Kunci Publik ...................................... 8

Gambar 2.3 Skema PNRG ................................................................................. 11

Gambar 3.1 Diagram Alir Enkripsi..................................................................... 15

Gambar 3.2 Diagram Alir Dekripsi .................................................................... 16

Gambar 3.3 Algoritma Enkripsi ......................................................................... 17

Gambar 3.4 Algoritma Dekripsi ......................................................................... 19

Gambar 3.5 Tampilan Halaman Awal ................................................................ 21

Gambar 3.6 Tampilan Halaman Enkripsi............................................................ 22

Gambar 3.7 Tampilan Halaman Dekripsi ........................................................... 23

Gambar 4.1 Tampilan Halaman Awal ................................................................ 25

Gambar 4.2 Kotak Dialog saat Memilih Dokumen ............................................. 26

Gambar 4.3 Tampilan Isi Dokumen dan Kunci Acak.......................................... 27

Gambar 4.4 Tampilan Hasil Enkripsi dan Lama Proses ...................................... 27

Gambar 4.5 Tampilan Save Dialog..................................................................... 28

Gambar 4.6 Pesan Ketika Proses Penyimpanan Hasil Enkripsi Berhasil Dilakukan

............................................................................................................. 28

Gambar 4.7 Kotak Dialog saat Memilih Dokumen ............................................. 29

Gambar 4.8 Tampilan Isi Ciphertext dan Kunci Acak yang Tersimpan .............. 30

Gambar 4.9 Tampilan Hasil Dekripsi dan Lama Proses ..................................... 30

Gambar 4.10 Tampilan Save Dialog ................................................................... 31

Gambar 4.11 Pesan Ketika Proses Penyimpanan Hasil Dekripsi Berhasil

Dilakukan ...................................................................................... 31

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 16: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

DAFTAR TABEL

Tabel 4.1 Kandidat Plaintext berformat .txt ........................................................ 33

Tabel 4.2 Kandidat Kunci untuk Plaintext berformat .txt .................................... 34

Tabel 4.3 Kandidat Plaintext berformat .doc ...................................................... 34

Tabel 4.4 Kandidat Kunci untuk Plaintext berformat .doc .................................. 35

Tabel 4.5 Ciphertext Proses Enkripsi berformat .txt ........................................... 36

Tabel 4.6 Ciphertext Proses Enkripsi berformat .doc .......................................... 36

Tabel 4.7 Proses Enkripsi ................................................................................... 37

Tabel 4.8 Proses Dekripsi................................................................................... 39

Tabel 4.9 Keberhasilan Enkripsi Dekripsi Berformat .txt.................................... 41

Tabel 4.10 Keberhasilan Enkripsi Dekripsi Berformat .doc ................................ 41

Tabel 4.11 Lama Proses Enkripsi ....................................................................... 42

Tabel 4.12 Lama Proses Dekripsi ....................................................................... 43

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 17: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

1

BAB I

PENDAHULUAN

1.1 Latar Belakang

Perkembangan teknologi informasi yang semakin pesat telah

mempengaruhi seluruh aspek kehidupan dan memberikan banyak sekali

keuntungan. Selain itu ada juga aspek – aspek dari sisi negatif dari

kemajuan sistem informasi tersebut. Pada dasarnya melakukan pengiriman

data tanpa melakukan pengamanan pada konten dari data yang dikirim,

dapat menyebabkan adanya penyadapan pada jalur pengirimannya.

Data penting yang berformat .txt seperti berkas teks biasa, skrip, kode

sumber program (source code program), berkas konfigurasi atau gambar

(ASCII art) mudah sekali untuk disadap ketika proses pengiriman

dikarenakan tidak adanya sistem untuk penyandian berkas tersebut. Untuk

data berformat .doc dapat disandikan menggunakan password karena

Miscrosoft Word memiliki fitur enkripsi. Namun fitur enkripsi Ms Word

tersebut memiliki kelemahan yaitu adanya aplikasi yang dapat digunakan

untuk membobol file yang telah terenkripsi.

Untuk itulah peranan teknologi keamanan informasi benar - benar

dibutuhkan. Salah satu cara yang bisa digunakan adalah menyandikan

(mengenkripsi) informasi atau data rahasia yang akan dikirim, sehingga

pihak yang tidak berkepentingan tidak dapat membaca informasi tersebut,

pihak tersebut sulit bahkan tidak dapat memahami isi informasi tersebut.

Salah satu teknik untuk pengamanan data adalah dengan

menggunakan algoritma penyandian data. Algoritma penyandian data saat

ini semakin banyak jumlahnya, sejalan dengan berkembangnya ilmu yang

mempelajari penyandian data tersebut. Ilmu ini biasa disebut Kriptografi.

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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 18: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

2

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 One Time Pad. Algoritma One Time Pad merupakan algoritma

sederhana dan unbreakable yang sampai saat ini dinyatakan aman karena

masih belum ada serangan yang benar-benar dapat mematahkan algoritma

ini. Hal ini dikarenakan algoritma One Time Pad memiliki barisan kunci

acak yang ditambahkan ke pesan plaintext yang tidak acak untuk

menghasilkan chipertext yang seluruhnya acak. Beberapa barisan kunci

yang digunakan untuk mendeskripsi ciphertext mungkin menghasilkan

plaintext yang mempunyai makna. Kunci acak tersebut dibangkitkan

menggunakan metode pembangkit bilangan acak Mersenne Twister,

Mersenne Twister menghasilkan bilangan acak yang memiliki distribusi

yang sangat bagus, pembangkitan bilangan yang sangat cepat dan

menggunakan memori yang efisien.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas, maka yang menjadi rumusan

masalah adalah sebagai berikut :

1. Berapa presentase keberhasilan pengujian implementasi algoritma One

Time Pad dalam mengenkripsi dan mendekripsi berkas dokumen

(.txt,.doc)?

1.3 Tujuan

Tujuan penelitian ini adalah untuk mengetahui presentase

keberhasilan implementasi algoritma One Time Pad untuk mengenkripsi

dan mendekripsi berkas dokumen (.txt,.doc).

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 19: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

3

1.4 Batasan Masalah

Batasan masalah dalam penelitian ini adalah:

1. Program ini dibuat untuk pemakaian single user.

2. Program diimplementasikan untuk mengenkripsi dan mendekripsi

berkas dokumen .txt dan .doc.

3. Program hanya bisa disimpan dalam berkas dokumen .txtdan .doc.

4. Tidak membahas manajemen kunci.

1.5 Metodologi Penelitian

1.5.1 Studi Literatur

Mengenal prinsip enkripsi dan dekripsi sebagai pengetahuan dasar

untuk memecahkan masalah.

Mengenal dan memahami Algoritma One Time Pad dan proses

kerjanya.

Mengenal dan memahami metode Mersenne Twister dan proses

kerjanya.

1.5.2 Analisis Sistem

Membuat gambaran mengenai data dan proses serta kebutuhan

sistem yang diperlukan dalam mengimplementasikan program.

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 Java.

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,.doc)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 20: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

4

1.6 Sistematika Penulisan

BAB I PENDAHULUAN

Berisi latar belakang masalah, rumusan masalah, tujuan

penulisan, batasan masalah, metodologi penulisan, dan

sistematika penulisan.

BAB III LANDASAN TEORI

Berisi tentang pengertian kriptografi, algoritma kriptografi,

algoritma One Time Pad dan pembangkit bilangan acak dengan

metode Mersenne Twister.

BAB III ANALISIS DAN PERANCANGAN

Berisi tentang perancangan sistem berupa diagram alir enkripsi

dan dekripsi menggunakan Algoritma One Time Pad. Bab ini juga

beriai tentang rancangan desain user interface, serta dukungan

hardware dan software terhadap program yang telah dibuat.

BAB IV ANALISIS DAN PERANCANGAN

Berisi tentang cara kerja untuk melakukan enkripsi dekripsi

dokumen menggunakan algoritma One Time Pad.

BAB V ANALISIS DAN PERANCANGAN

Berisi tentang kesimpulan atas analisa dan saran berdasarkan hasil

yang telah dilaksanakan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 21: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

5

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

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

ditransformasikan kembali ke dalam bentuk plaintext agar dikenali. Proses

transformasi 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:

Plaintext Enkripsi Ciphertext Dekripsi Plaintext

Kunci

Gambar 2.1 Enkripsi Dekripsi Sederhana

Secara umum, enkripsi dan dekripsi dapat diterangkan sebagai berikut :

EK (M) = C (Proses Enkripsi)

DK (C) = M (Proses Dekripsi)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 22: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

6

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 pesan tetap tidak

bisa dibaca (Kurniawan, 2004).

2.2 Komponen Kriptografi

Pada dasarnya, kriptografi terdiri dari beberapa komponen sebagai

berikut (Amelia, 2007) :

1. Algoritma, merupakan himpunan aturan matematis yang digunakan

dalam enkripsi dan dekripsi.

2. Enkripsi, adalah transformasi data ke dalam bentuk yang tidak dapat

terbaca tanpa sebuah kunci tertentu.

3. Dekripsi, merupakan kebalikan dari enkripsi, yaitu transformasi data

terenkripsi kembali ke bentuknya semula.

4. Kunci (Key), digunakan pada saat melakukan enkripsi dan dekripsi.

Pada kriptografi modern, keamanan enkripsi tergantung pada kunci,

dan tidak tergantung kepada algoritmanya apakah dilihat orang lain

atau tidak.

5. Pesan asli (Plaintext), disebut juga dengan clear-text, merupakan teks

asli yang akan diproses menggunakan algoritma kriptografi tertentu

untuk menjadi ciphertext.

6. Ciphertext, merupakan pesan yang telah melalui proses enkripsi yang

merupakan himpunan karakter acak.

7. Kriptologi, merupakan studi tentang kriptografi dan kriptanalisis.

8. Kriptanalisis (Cryptanalysist), merupakan aksi memecahkan

mekanisme kriptografi dengan cara menganalisisnya untuk

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 23: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

7

menemukan kelemahan dari suatu algoritma kriptografi sehingga

akhirnya dapat ditemukan kunci atau teks asli.

9. Kriptosistem, adalah perangkat keras atau implementasi perangkat

lunak kriptografi yang diperlukan dalam mentransformasi sebuah

pesan asli menjadi ciphertext dan juga sebaliknya.

2.3 Kunci Simetris dan Asimetris

Berdasarkan kunci yang dipakai, algoritma kriptografi dapat

dibedakan menjadi 2, yaitu:

a. Kunci Tunggal (Symmetric Algorithm)

Algoritma simetris (konvensial) 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

menggunakan suatu kunci. Jika B menerima pesan tersebut, maka B harus

mendeskrip pesan dengan menggunakan kunci yang sama dengan kunci

yang digunakan oleh A. Keuntungan algoritma simetris yaitu memiliki

kecepatan proses enkripsi dan dekripsi, daripada menggunakan kunci

publik. Kelemahan kunci simeris 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, 2004).

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 (private key) hanya

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 24: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

8

diketahui oleh pihak yang sah (Raharjo, 2002). Contohnya RSA, Elgamal,

Diffie-Hellman.

Plaintext Enkripsi Ciphertext Dekripsi Plaintext

Kunci Publik Kunci Privat

Gambar 2.2 Enkripsi dan Dekripsi dengan Kunci Publik

2.4 Algoritma One Time Pad

One Time Pad adalah saah satu metode kriptografi dengan algoritma

jenis simetri. Metode ktiptografi ini ditemukan pada tahun 1917 oleh Major

Yoseph Mouborgne dan Gilbert Vernam pada perang dunia ke dua. Metode

ini telah diklaim sebagai satu - satunya algoritma kriptografi sempurna yang

tidak dapat dipecahkan. Suatu algoritma dikatakan aman, apabila tidak ada

cara untuk menemukan plaintext-nya. Sampai saat ini, hanya algoritma One

Time Pad (OTP) yang dinyatakan tidak dapat dipecahkan meskipun

diberikan sumber daya yang tidak terbatas (Febryan, 2014).

2.4.1 Proses Enkripsi dan Dekripsi

Prinsip enkripsi pada algoritma ini adalah dengan

mengkombinasikan masing-masing karakter pada plaintext dengan

satu karakter pada kunci. Oleh karena itu, panjang kunci harus sama

dengan panjang plaintext. Enkripsi dapat dinyatakan sebagai

penjumlahan modulo 256 (menggunakan kode ASCII 8 bit) dari satu

karakter plaintext dengan satu karakter kunci OTP (Bilqis. 2012):

ci = (pi + ki) mod 256 (2.1)

Dalam hal ini, pi adalah plaintext ke-I, ki adalah kunci ke-I, dan

ci adalah huruf ciphertext ke-i. Panjang kunci sama dengan panjang

plaintext, sehingga tidak ada kebutuhan mengulang penggunaan kunci

selama proses enkripsi. Setelah pengirim mengenkripsikan pesan

dengan kunci, ia menghancurkan kunci tersebut. Penerimaan pesan

menggunakan kunci yang sama untuk mendekripsikan karakter-

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 25: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

9

dkarakter ciphertext menjadi karakter-karakter plaintext dengan

persamaan:

pi = (ci – ki) mod 256 (2.2)

2.5 Pembangkit Bilangan Acak

Pembangkit Bilangan Acak atau Random Number Generator (RNG)

adalah suatu peralatan komputasional yang dirancang untuk menghasilkan

suatu urutan nilai tersebut dapat dianggap sebagai suatu keadaan acak

(random). RNG ini tidak dapat diterapkan dalam prakteknya. Bilangan acak

yang dihasilkan oleh komputer sekalipun tidak benar – benar acak dan

kebanyakan bilangan acak yang diterapkan dalam kriptograsi juga tidak

benar – benar acak, tetapi hanya berupa acak semu. Ini berarti bahwa

bilangan acak yang dihasilkan itu dapat ditebak susunan atau urutan

nilainya. Dalam kriptografi, bilangan acak sering dibangkitkan dengan

menggunakan pembangkit bilangan acak semu atau Pseudo Random

Number Generator (PRNG) (Bilqis,2012).

2.6 Pembangkit Bilangan Acak Semu

Pembangkit Bilangan Acak Semu atau Pseudo Random Number

Generator (PRNG) merupakan suatu algoritma yang menghasilkan suatu

urutan nilai dimana elemen – elemennya bergantung pada setiap nilai yang

dihasilkan. Output dari PRNG tidak betul – betul acak, tetapi hanya mirip

dengan properti dari nilai acak. Hal ini didukung oleh penelitian

sebelumnya. (Douglas, 1995) menyimpulkan dari beberapa algoritma untuk

membangkitkan bilanga acak semu, tidak ada yang benar – benar dapat

menghasilkan bilangan acak secara sempurna dalam arti benar – benar acak

dan tanpa ada perulangan selama pembangkit yang digunakan adalah

komputer yang memiliki sifat deterministik dan bilangan benar – benar acak

hanya dapat dihasilkan oleh perangkat keras (hardware).

Menurut ( Candra, 2010) beberapa syarat penting yang harus dipenuhi

oleh bilangan acak adalah seperti berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 26: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

10

1. Dapat diulang. Sekumpulan (barisan) bilangan yang sama harus bisa

diperoleh (diulang) dengan menggunakan seed yang sama, hal ini

kadang – kadang diperlukan untuk pemeriksaan dan penelusuran

program (debugging).

2. Keacakan. Barisan bilangan harus memenuhi syarat keacakan secara

seragam (uniform) yang dapat diuji melalui uji statistika.

3. Periode panjang. Karena pada dasarnya bilangan acak itu merupakan

barisan berulang dengan berbagai periode, maka periode pengulangan

harus sangat besar atau lama melebihi banyaknya bilangan acak yang

diperlukan.

Tidak peka seed. Sekalipun barisan bilangannya bergantung pada seed

tetapi sifat keacakan dan periodisasi sedapat mungkin tidak bergantung pada

seed-nya.

Secara umum, sebuah PRNG didefinisikan sebagai algoritma

kriptografi yang digunakan untuk menghasilkan bilangan secara acak.

Pengertian acak sendiri adalah bilangan yang dihasilkan dalam setiap waktu

tidaklah sama. Sebuah PRNG memiliki sebuah kondisi awal K yang rahasia.

Saat digunakan, PNRG harus membangkitkan output acak yang tidak dapat

diidentifikasi oleh kriptanalis yang tidak tahu dan tidak dapat menebak

kondisi awal K. Dalam hal ini, PRNG memiliki kesamaan dengan cipher

aliran. Akan tetapi, sebuah PRNG harus mampu mengubah kondisi awalnya

dengan memproses input sehingga tidak dapat diprediksi oleh kriptanalis.

Umumnya PRNG memiliki kondisi awal yang tidak sengaja dapat ditebak

oleh kriptanalis dan harus mengalami banyak proses sebelum kondisinya

aman dan rahasia. Patut dipahami bahwa sebuah input untuk PRNG

mrmiliki informasi rahasia yang tidak diketahui oleh kriptanalis. Input –

input ini umumnya diperoleh dari proses – proses fisik, interaksi user

dengan mesin, atau proses eksternal lain yang sulit diprediksi. Dalam desain

dan implementasi harus dapat dipastikan bahwa input – input ini memiliki

cukup jaminan keamanan dan kerahasiaan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 27: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

11

Kebanyakan algoritma dari PRNG ditujukan untuk mengahasilkan

suatu sampel yang secara seragam terdistribusi. PRNG ini sering digunakan

dalam kriptografo pada proses pembentukan kunci dari metode kriptografi.

Tingkat kerumitan dari PRNG menentukan tingkat keamanan dari metode

kriptografi. Semakin rumit PRNG yang digunakan maka semakin tinggi

tingkat keamanan dari metode kriptografi (Richard A, 2005).

PRNG

Bilangan acak semu

Input seed rahasia

Gambar 2.3 Skema Dasar PRNG

Semua deretan bilangan acak yang dibangkitkan dari rumus

matematika, serumit apapun, dianggap sebagai deret acak semu, karena

dapat diulang pembangkitnya. Sementara itu, banyak produk software yang

dinyataan sebagai produk yang aman karena menggunakan bilangan acak

semacam OTP (One Time Pad). Namun karena OTP ini dibangkitkan dari

bilangan acak semu, maka keamanan yang diperoleh juga semu.

2.7 Mersenne Twister

Mersenne Twister merupakan suatu pseudo random number generator

yang dikembangkan pada tahun 1997 oleh Makoto Matsumoto dan Takuji

Nishimura. Algoritma ini menawarkan generasi yang cepat dari bilangan

acak kualitas tinggi, telah dirancang secara khusus untuk mengatasi setiap

cacat yang ditemukan pada algoritma terdahulu.

Terdapat dua varian dari algoritma, yang paling baru dan lebih umum

dipakai adalah Mersenne Twister MT 1993. Algoritma ini mempunyai

properti sebagai berikut :

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 28: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

12

a. Dirancang untuk mempunyai suatu periode kolosal 129937 – 1.

Periode ini menjelaskan sesuai dengan namanya, suatu Mersenne

prime, dan beberapa jaminan atas algoritma bergantung pada

penggunaan internal dari Mersenne prime.

b. Mersenne Twister mempunyai suatu equidistribution dimensional

high order. Ini berarti secara default, terdapat korelasi serial yang

dapat diabaikan anatara nilai suksesif dalam deret output.

c. Algoritma lebih cepat daripda algoritma yang ada tetapi

menggunakan generator yang lebih statistikal.

d. Algoritma ini bersifat statistikal secara acak dalam semua bit

outputnya.

Algoritma ini sendiri merupakan suatu twisted generalised shift

feedback register atau TGSFR. Kata “twist” merupakan suatu

transformasi di mana menjamin equididtribution dari nilai yang

digenerasi dalam 623 dimensi (Devi, 2008).

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 29: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

13

BAB III

ANALISA DAN PERANCANGAN

3.1 Enkripsi pada One Time Pad

3.1.1. Kebutuhan Input :

1. Beberapa kalimat atau teks panjang sebagai plaintext.

2. Menggunakan beberapa huruf atau simbol acak sebagai key.

3.1.2 Kebutuhan Proses :

1. Proses enkripsi sebuah plaintext dengan key menggunakan tabel

ASCII yang sudah ada.

2. Kemudian sesuaikan setiap huruf pada plaintext dengan huruf atau

simbol yang menjadi key, yaitu dengan mengubah menjadi

bilangan desimal yang kemudian dijumlahkan lalu dimodulo 256.

3.1.3 Kebutuhan Output :

Hasil penjumlahan yang telah dimodulo 256 kemudian diubah

kembali menjadi huruf atau simbol. Hasil tersebut merupakan

output dari enkripsi One Time Pad yang menjadi ciphertext.

3.2 Dekripsi pada One Time Pad

3.2.1 Kebutuhan Input :

1. Beberapa kalimat atau teks panjang sebagai ciphertext

2. Menggunakan beberapa huruf atau simbol acak yang sama dengan

yang digunakan untuk enkripsi.

3.2.2 Kebutuhan Proses :

1. Proses dekripsi sebuah ciphertext dengan key yang sama

menggunakan tabel ASCII yang sudah ada.

2. Kemudian sesuaikan setiap huruf pada ciphertext dengan huruf

atau simbol yang menjadi key yang sama, yaitu dengan mengubah

menjadi bilangan desimal yang kemudian dikurangi lalu dimodulo

256.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 30: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

14

3.2.3 Kebutuhan Output :

Hasil pengurangan yang telah dimodulo 256 kemudian

diubah kembali menjadi huruf atau simbol. Hasil tersebut

merupakan output dari dekripsi One Time Pad yang menjadi

plaintext kembali

3.3 Diagram Alir Sistem

3.3.1 Diagram Alir Sistem Enkripsi

Gambar 3.1 adalah diagram alir dari sistem enkripsi yang dimulai

dengan mencari plaintext berkas asli kemudian memasukkan kunci

random setelah itu dilakukan proses enkripsi yang menghasilkan

ciphertext lalu disimpan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 31: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

15

Cari plaintext

Mulai

Masukkan kunci

random

Enkripsi

Ciphertext

Simpan

Selesai

Gambar 3.1 Diagram Alir Enkripsi

3.3.2 Diagram Alir Sistem Dekripsi

Gambar 3.2 adalah diagram alir dari sistem dekripsi yang dimulai

dengan mencari chipertext kemudian memasukkan kunci random

setelah itu dilakukan proses dekripsi yang menghasilkan plaintext lalu

disimpan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 32: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

16

Cari ciphertext

Mulai

Masukkan kunci

random

Dekripsi

Plaintext

Simpan

Selesai

Gambar 3.2 Diagram Alir Dekripsi

3.4 Analisis Algoritma One Time Pad

3.4.1 Algoritma Enkripsi

Pada gambar 3.3 adalah diagram alir dari enkripsi yang dimulai

dengan inisialisasi im atau integer message, inisialisasi ik atau integer

key serta inisialisasi data dimana data merupakan integer dari

message.length. Selanjutnya menentukan i=0 yang kemudian lalu

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 33: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

17

diproses dengan data[i] = (im[i] + ik[i])%256 jika i < message.length

maka akan dilakukan looping dan jika tidak maka return.

Start

Insialisasi im

Insialisasi ik

i = 0

data[i] = (im[i] + ik[i])%256

i < message.length

End

Ya

Tidak

Return

Insialisasi data

Gambar 3.3 Algoritma Enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 34: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

18

3.4.2 Algoritma Dekripsi

Pada gambar 3.4 adalah diagram alir dari dekripsi yang dimulai

dengan inisialisasi im atau integer message, inisialisasi ik atau integer

key serta inisialisasi data dimana data merupakan integer dari

message.length.. Selanjutnya menentukan i=0 yang kemudian lalu

diproses dengan data[i] = (im[i] - ik[i])%256 jika i < message.length

maka akan dilakukan looping dan jika tidak maka return.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 35: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

19

Start

Insialisasi im

Insialisasi ik

i = 0

data[i] = (im[i] - ik[i])%256

i < message.length

Return

End

Ya

Tidak

Inisialisasi data

Gambar 3.4 Algoritma Dekripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 36: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

20

3.4.3 Algoritma Mersenne Twister ( Archana Jagannatam)

Berikut adalah agoritma untuk kelas Mersenne Twister :

1. Step 0

Tentukan bitmask untuk upper dan lower bits

U ← ,

2. Step 1

Tentukan array x dengan nilai bukan 0

x[0], x[1], ............, x[n-1]

3. Step 2

Hitung ( ), dimana the upper bits digabungkan dengan the

lower bits x[i+1]

y ← (x[i] AND u) OR (x[(i +1)mod n] AND ll)

4. Step 3

Hitung langkah selanjutnya

5. Step 4

Kali x[i] dengan mengganti matrik T untuk persamaan distribusi

yang lebih baik

y ← x[i]

y ← y ⊕ ( y >> u)

y ← y ⊕ (( y << s) & b)

y ← y ⊕ (( y << t) & c)

z ← y ⊕ ( y >> l)

output y

6. Step 5

Tambahkan i dengan 1

i ← (i +1)mod n

7. Step 6

Ulangi proses langsung ke step 2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 37: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

21

3.5 Perancangan Antarmuka

3.5.1 Tampilan Halaman Awal

Halaman awal pada Gambar 3.1 adalah tampilan pertama saat

sistem dijalankan. Pada halaman ini terdapat button Enkripsi dan Dekripsi.

Jika user menekan button Enkripsi, maka sistem akan menampilkan

halaman selanjutnya, yaitu Halaman Enkripsi. Dan jika user menekan

button Dekripsi, maka sistem akan menampilkan halaman selanjutnya,

yaitu Halaman Dekripsi.

Gambar 3.5 Tampilan Halaman Awal

3.5.2 Tampilan Halaman Enkripsi

Halaman Enkripsi pada Gambar 3.2 adalah tampilan untuk proses

enkripsi. Pada halaman ini terdapat button “Browse” yang digunakan untuk

mencari dokumen untuk dienkripsi. Button “Genarate Key” digunakan

untuk menampilkan kunci acak, lalu button “Proses” yang digunakan untuk

menampilkan hasil enkripsi serta lamanya proses enkripsi. Button

“Simpan” yang digunakan untuk menyimpan hasil enkripsi. Button

“Kembali” yang digunakan untuk kembali ke halaman awal.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 38: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

22

Gambar 3.6 Tampilan Halaman Enkripsi

3.5.3 Tampilan Halaman Dekripsi

Halaman Dekripsi pada Gambar 3.3 adalah tampilan untuk proses

dekripsi. Pada halaman ini terdapat button “Browse” yang digunakan untuk

mencari dokumen untuk didekripsi. Button “Genarate Key” digunakan

untuk menampilkan kunci acak, lalu button “Proses” yang digunakan untuk

menampilkan hasil dekripsi serta lamanya proses dekripsi. Button

“Simpan” yang digunakan untuk menyimpan hasil dekripsi. Button

“Kembali” yang digunakan untuk kembali ke halaman awal.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 39: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

23

Gambar 3.7 Tampilan Halaman Dekripsi

3.6 Perancangan Input Dokumen

3.6.1 Berformat .txt

Berikut kandidat plaintext untuk dokumen yang berformat .txt dan

.doc dimana nanti akan menggunakan kunci acak yang berbeda :

1. Engkau selalu hadir dalam setiap langkah ku

2. I want him to be the only man that I’ll love for the rest of my life

3. Fidelis Asterina

4. File_output_stream = new FileOutputstream(f)

5. key[i] = (char) (key[i] - 72);

6. private static final int MATRIX_A = 0x9908b0df;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 40: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

24

7. Tujuan penelitian ini adalah untuk mengimplementasikan algoritma

One Time Pad untuk mengenkripsi dan mendekripsi berkas

dokumen (.txt,.doc) dan Mersenne Twister sebagai pembangkit

kunci.

8. MersenneTwisterFast other = (MersenneTwisterFast) o;

9. for (int x = 0; x < mt.length; x++) {

10. Batasan masalah dalam penelitian ini adalah:

3.6.2 Berformat .doc

Berikut kandidat plaintext untuk dokumen yang berformat .doc :

1. Give him the best of me till the day that i die

2. JOptionPane.showMessageDialog(this, "Penyimpanan Hasil

Dekripsi Telah Berhasil Disimpan!! di " + filename);

3. Allah Bapa sungguh besar kasih Mu,, Engkau selalu hadir dalam

setiap langkah ku,,

4. Universitas Sanata Dharma

5. for (;k!=0; k--){

6. Algoritma penyandian

7. Algortima

8. FileWriter outFile = new FileWriter(f);

PrintWriter out = new PrintWriter(outFile, true);

9. THIS PLAINTEXT

10. TEKNIK INFORMATIKA FAKULTAS SAINS DAN

TEKNOLOGI

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 41: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

25

BAB IV

HASIL DAN PEMBAHASAN

4.1 Implementasi Antarmuka

Implementasi program ini dilakukan dengan menggunakan NetBeans IDE

6.9.1 pada komputer dengan spesifikasi processor Intel Core i3 2,27 GHz,RAM

4.00 GB, dan hardisk 320 GB. Program ini dibuat sesuai dengan perancangan

yang dibuat pada bab sebelumnya. Dan program ini dibuat dengan menggunakan

bahasa pemrograman Java.

4.1.1. Implementasi Halaman Awal

Halaman awal adalah tampilan yang pertama kali keluar pada saat

program dijalankan. Pada halaman ini terdapat tombol “Enkripsi” dan

“Dekripsi”. Jika user ingin menggunakan program untuk mengenkripsi

dokumen, maka user harus menekan tombol “Enkripsi”. Dan jika user

ingin menggunakan program untuk mendekripsi dokumen, maka user

harus menekan tombol “Dekripsi”.

Gambar 4.1 Tampilan Halaman Awal

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 42: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

26

4.1.2 Implementasi Halaman Enkripsi

Halaman enkripsi akan muncul setelah user menekan tombol

“Enkripsi”. Pada halaman enkripsi ini terdapat tombol “Browse”, tombol

“Generate Key”, tombol “Proses”, tombol “Simpan”,tpmbol “Kembali”, text

area “plainArea”, text area “enkripKey”, text area “hasilEnkrip”, dan text

area “LamaEnkrip”.

Jika user ingin mengenkripsi dokumen maka user menekan tombol

“Browse” untuk mencari dokumen yang akan dienkripsi seperti di bawah

ini.

Gambar 4.2 Kotak Dialog saat memilih Dokumen

Setelah memilih file kemudian pengguna menekan tombol “Open”.

Setelah menekan tombol “Open” maka dokumen tersebut akan ditampilkan,

kemudian user menekan tombol “Generate Key” maka kunci acak akan

ditampilkan seperti di bawah ini.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 43: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

27

Gambar 4.3 Tampilan Isi Dokumen dan Kunci Acak

Kemudian user melakukan proses enkripsi dengan menekan tombol

“Proses” maka hasil dari proses akan muncul serta lamanya proses tersebut

dilakukan.

Gambar 4.4 Tampilan Hasil Enkripsi dan Lama Proses

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 44: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

28

Selanjutnya user dapat menyimpan hasil enkripsi dengan menekan

tombol “Simpan”. Hasil enkripsi dapat disimpan dengan format .txt dan

.doc.

Gambar 4.5 Tampilan Save Dialog

Setelah selesai menyimpan, jika dokumen berhasil disimpan akan

muncul pesan "Penyimpanan Hasil Enkripsi dan Key Telah Berhasil

Disimpan!! di .........". Titik-titik tersebut berisi direktori tempat dokumen

disimpan.

Gambar 4.6 Pesan Ketika Proses Penyimpanan Hasil Enkripsi

Berhasil Dilakukan

4.1.3 Implementasi Halaman Dekripsi

Halaman dekripsi akan muncul setelah user menekan tombol

“Dekripsi”. Pada halaman dekripsi ini terdapat tombol “Browse”, tombol

“Browse”, tombol “Proses”, tombol “Simpan”,tombol “Kembali”, text area

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 45: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

29

“cipherArea”, text area “dekripKey”, text area “hasilDekripsi”, dan text area

“LamaDekripsi”. Jika user ingin mendekripsi dokumen maka user menekan

tombol “Browse” untuk mencari dokumen yang akan didekripsi seperti di

bawah ini.

Gambar 4.7 Kotak Dialog saat memilih Dokumen

Setelah memilih file kemudian pengguna menekan tombol “Open”.

Setelah menekan tombol “Open” maka dokumen tersebut akan ditampilkan,

kemudian user menekan tombol “Browse” untuk mencari kunci yang

disimpan setelah itu menekan tombol “Open”, maka tampilan akan seperti

di bawah ini.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 46: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

30

Gambar 4.8 Tampilan Isi Ciphertext dan Kunci Acak yang Tersimpan

Kemudian user melakukan proses dekripsi dengan menekan tombol

“Proses” maka hasil dari proses akan muncul serta lamanya proses tersebut

dilakukan.

Gambar 4.9 Tampilan Hasil Dekripsi dan Lama Proses

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 47: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

31

Selanjutnya user dapat menyimpan hasil dekripsi dengan menekan

tombol “Simpan”. Hasil enkripsi dapat disimpan dengan format .txt dan

.doc.

Gambar 4.10 Tampilan Save Dialog

Setelah selesai menyimpan, jika dokumen berhasil disimpan akan

muncul pesan "Penyimpanan Hasil Dekripsi Telah Berhasil Disimpan!! di

.........." Titik-titik tersebut berisi direktori tempat dokumen disimpan.

Gambar 4.11 Pesan Ketika Proses Penyimpanan Hasil Dekripsi

Berhasil Dilakukan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 48: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

32

Berikut listing program beberapa proses yang terdapat pada tombol - tombol

di Form Tampilan :

1. Tombol Generate Key

Berikut baris – baris perintah untuk menampilkan kunci secara acak,

dimana kelas Mersenne Twister sudah ada :

2. Proses Enkripsi

Berikut baris – baris perintah untuk proses enkripsi :

3. Proses Enkripsi

Berikut baris – baris perintah untuk proses dekripsi :

public static String genKey(int length) { MersenneTwisterFast rand = new MersenneTwisterFast();

char[] key = new char[length]; for (int i = 0; i < length; i++) { key[i] = (char) rand.nextInt(132);

if ((int) key[i] < 97) { key[i] = (char) (key[i] + 72);

} if ((int) key[i] > 122) { key[i] = (char) (key[i] - 72);

} }

return new String(key); }

public static String encrypt(String message, String key) { if (message.length() != key.length()) {

error("Lengths must be equal"); }

int[] im = charArrayToInt(message.toCharArray()); int[] ik = charArrayToInt(key.toCharArray()); int[] data = new int[message.length()];

for (int i = 0; i < message.length(); i++) {

data[i] = (im[i] + ik[i])%256; }

return new String(intArrayToChar(data)); }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 49: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

33

4.2 Hasil Pengujian

Berikut ini adalah kandidat plaintext berformat .txt yang akan dienkripsi :

Tabel 4.1 Kandidat Plaintext berformat .txt

No Plaintext

1 Engkau selalu hadir dalam setiap langkah ku

2 I want him to be the only man that I’ll love for the rest of my life

3 Fidelis Asterina

4 File_output_stream = new FileOutputstream(f)

5 key[i] = (char) (key[i] - 72);

6 private static final int MATRIX_A = 0x9908b0df;

7 Tujuan penelitian ini adalah untuk mengimplementasikan algoritma One

Time Pad untuk mengenkripsi dan mendekripsi berkas dokumen (.txt,.doc) dan Mersenne Twister sebagai pembangkit kunci.

8 MersenneTwisterFast other = (MersenneTwisterFast) o;

9 for (int x = 0; x < mt.length; x++) {

10 Batasan masalah dalam penelitian ini adalah:

public static String decrypt(String message, String key) { if (message.length() != key.length()) {

error("Lengths must be equal"); }

int[] im = charArrayToInt(message.toCharArray()); int[] ik = charArrayToInt(key.toCharArray()); int[] data = new int[message.length()];

for (int i = 0; i < message.length(); i++) {

data[i] = (im[i] - ik[i])%256; }

return new String(intArrayToChar(data)); }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 50: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

34

Berikut ini adalah kandidat kunci untuk plaintetx berformat .txt yang mana

panjang kunci sama dengan panjang plaintext :

Tabel 4.2 Kandidat Kunci untuk Plaintext berformat .txt

No Kunci

1 ofnPZo[\MG6qV[P<f;h_FbieiOy>SyMHeKgUfEi@\6l

2 TybGYUiKD<JcmjV[slqcJo]rR`oZ;78oQo:Ooc8oabrer8T`_buhQ599QM

D<Y\ie8z=L

3 ]_IU8Ug6VnX7d7W

4 5i85KP=z;SprP]ETktbFm8<SMqhecZOOIW_9<ccOTfr5

5 P[dig7`<[aZQQWAUM]`^Xr3;kW4v34

6 9>X4LH\yyrKG[XZW]Qf[NgX3hvc6eZ^kwzex\rvrYcRM93

7 rW[YVsX:6]uY5s[VtxaxmcSWuOtj`[bvNsmAJjlPGHVsCa@Ze]KiUj^q

FP8JYaKEhEMbiP\=P8zmN7kXiM3aP@whS[HsWWr:sHxN6Fm[6tJQI

3m3Y78VeL`pbfpD6Pj:n_xsmMAu_r_z_y^9CzSzmGkts^zJZ`i5VT_PiD

YdE[UsxfmwGO8oHOF;W@5

8 RdQYwh\e[z9?xxtm`X_XZ:wsriiZ6xjkxi4ty>;sTpn_;_R\dzkg

9 emTls^Zv4M@gvuy_XSrg^Oq[TE7sdN:xbvK:R

10 bKHR7vqqXy]e4`4p89c4IzmwfVORSxr5jbW;KZ;8goNQ

Berikut ini adalah kandidat plaintext berformat .doc yang akan dienkripsi :

Tabel 4.3 Kandidat Plaintext berformat .doc

No Plaintext

1 Give him the best of me till the day that i die

2 JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Dekripsi Telah Berhasil Disimpan!! di " + filename);

3 Allah Bapa sungguh besar kasih Mu,, Engkau selalu hadir dalam setiap

langkah ku,,

4 Universitas Sanata Dharma

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 51: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

35

5 for (;k!=0; k--){

6 Algoritma penyandian

7 Algoritma

8 FileWriter outFile = new FileWriter(f);

PrintWriter out = new PrintWriter(outFile, true);

9 THIS PLAINTEXT

10 TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI

Berikut ini adalah kandidat kunci untuk plaintetx berformat .doc yang

mana panjang kunci sama dengan panjang plaintext :

Tabel 4.4 Kandidat Kunci untuk Plaintext berformat .doc

No Kunci

1 wrV5l5AvrRIybaR;iR]vFnOBlYC;_sdgy\t7QC:3ivhKurYkx7dzP

2 6zSZe><kSUwRpDA6Fqdxp`k\e5gpyZUN;t_fZ54tZ\TTU3[:IPGOx[UL

w8BbS``TxV:K_Vy_b4d`SJqIqt`NdMLs3fKyYgUJW?kY`POHrYv:=Bd

3 ZyHIoUlQc4rVIIE3Z`ruP7Huo\LgURJ_KH]gV6i6mPN\7`[OhJgLbW7A

vWCV<y^^\:HCd_@VJO9WZIlM^X\3Y

4 NlF>WeBv6P]b4O6dMH3Y\x_TYWgU@

5 5TQEk]hNLM^5kGrAv]Ui oOa@

6 V8?oqOBVdZLasvsuCOqv`bvWIHp

7 9_m\7W8abn9Fk4Ev

8 zn>sze6>nZW\f?mPwTvkbKxh?]an9dBy4B[WZnriLs^WFKLoPR:KHIT

T^;8M:QRK8Zf4TkmqvLUNbCuvXnZwtvzjvy_vVT

9 :XPi9s4b:VuVbv`:rQ

10 sAWYiS^@t>fmTq?@3@T9d=arbr;X@wxXDVU4LJsI_8o9^fu4QZl

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 52: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

36

Berikut ini adalah hasil dari proses enkripsi dari plaintext berformat .txt :

Tabel 4.5 Ciphertext Proses Enkripsi berformat .txt

No Ciphertext

1 ´ÔÕ»»ä{ϲ³ÝË{¸Ê¤ÚªÃÕÆÖoì£Çâ® ·ÈÃͰʨ|¡á

2 Ù¨Çɳ­©j×ܸÀàÙÈjÞËÞËÜ»©W¬×²ãZϤÍÑèÊÃÒÖÝÍq§¬Åm³¢yÉâ¤ã£±

3 £È­º¤¾ÚVáÌÖ ÅÓ

4 Ò¤ª¿²î«ÈäÑÃÑ·¹ÌᦡÊm·ÑÑÈ©ÄùÌÓ°ÕÈ°ÁØ^

5 »ÀÝÄÐy{½¹²ÉjuuÈÅ׳Û[wk¨\o

6 ©°Áª­¼Áì欻Ļz½Æ¿ÇÇnÐƧä·£¶Ê ¢ê¯«´}

7 ÆÌÅηáxªËÚÅçÄ·âÊæÖ´»Ö»ÕÒÐÐêÃÞ®¯ØÓ¹´¸ÂØ°Æ®ÎÆдԶØ~Ò²·§

¼ÂÕ ¦»Ç¤ÅªµXÊβWàÆݽ¥åϸɳåÀÇ壬ټV³ÒÉٵò£àyÈЭÓÆÕÛ

¹£µØZìëáyoÙÎÕÃÚÌYßÅíÒµÙÙ²ñ³ÍÔΧvÇIJʫºÍe˺àÚÇÛÞ²¸¬³Ä´ÀnU

8 ÉÃÌÜÖÊʯñ¢²ìÝæ³ÁËÓxÉ®ßØä¦z ÅÏÝë΢âÞ²ÜÇäÓÑÀÅÐÚ¢

9 ËÜÆÇÈêTÅ`¤¥´Ðs®ËÃǹ³çÌZð¡tZÍ

10 ¤¬¼³ª×ßÅÚÐÆ Á϶ÝÜÔ»»»ÇáÓ£ËŤk»Óж

Berikut ini adalah hasil dari proses enkripsi dari plaintext berformat .doc :

Tabel 4.6 Ciphertext Proses Enkripsi berformat .doc

No Ciphertext

1 ¾Û̪ãƱÞ÷®ÝrÌÜfÛ´b௧çÌÌÀÕ°q·¢ÝÑkÙÛ¾xDnZ

2 ÉÃÎέª»´ÃÜ㬰­Ö×ëÑÇÐ ÎÓßàɶ¤ç|âÓÅÁĶ¡¼¨i ÂáÇuÜ£´ËÃÓÉtÌ»¦¬

Çv»ÄÔÅÓ¼¶ÚçɻԮºT¯âyuuw¥ÔÅž°µ×±GGOn

3 å´ª×u®²Óɾ·¬ÏÈ×µª©çÇ­Ú¾ºj¬Àt¤Ð¡ÎÅnÏ̼»ÝjÏ­ÆÀ©aÚ¸¯·©ÑÃУ

©³Ë¡Ä±º¿z áyef@c

4 £Ú¯´¼×µßª±Ð°¤ÅÁ©SÄÙÑÁºdqbJ

5 ÃÃe¹lnU¬£~Ù|YnJ

6 ¤¦Þã ¶ÃÅz¼ÆáïÔ㧸ÒäodSUz

7 zËÔË©À¬ÎÃFPx>R

8 ÀתØÑײÓÌwËÛ³³¹ã¹¨¹Ýß_£ÊÚ»´â¨§ÍÀ­vVÃÐÀ´¿£á¹Æ½h¸ÉÈ~xX»ÈrªÃ

Ô¨«ÝÖåÛ¾}½×·»ßÄÓèèïÏ´lc^

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 53: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

37

9 ¼Yã¤ÉºÊmD[

10 Ç¢§²~µ¿¡²~t¥¶¾¶³x¸Á¦vujǪ¾­­¾A[gv

4.3 Pembahasan

4.3.1 Enkripsi

Pada proses enkripsi ini, plaintext yang berupa huruf atau simbol

akan diubah menjadi bilangan desimal yang kemudian dijumlahkan

dengan kunci acak yang juga diubah menjadi bilangan desimal setelah itu

dimodulo 256. Kemudian hasil penjumlahan tersebut diubah ke huruf atau

simbol. Pengubahan dari huruf atau simbol menjadi bilangan desimal atau

sebaliknya ini menggunakan tabel ASCII (lampiran).

Contoh :

Plaintext :

Universitas Sanata Dharma

Kunci :

8@NajlJRkMa3^b`7[xi8_VqoU

Berikut proses plaintext dan kunci diubah menjadi bilangan

desimal berdasarkan tabel ASCII. Untuk mengubah huruf U pada plaintext

dapat dilihat di tabel ASCII dimana bilangan desimal untuk huruf U

adalah 85. Kemudian untuk huruf n bilangan desimalnya adalah 110.

Proses untuk semua plaintext dilakukan seperti itu berdasarkan tabel

ASCII. Untuk proses kunci yang diubah menjadi bilangan desimal

dilakukan sama seperti untuk proses plaintext sehingga didapatkan hasil

berupa bilangan desimal yang kemudian dijumlahkan lalu dimodulo 256

seperti tabel di bawah ini :

Tabel 4.7 Proses Enkripsi

Penjumlahan

(pi + ki) mod 256

Hasil

Penjumlahan

Huruf /

Simbol

(85 + 56) mod 256 141 (no symbol)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 54: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

38

(110 + 64) mod 256 174 ®

(105 + 78) mod 256 183 ·

(118 + 97) mod 256 215 ×

(101 + 106) mod 256 207 Ï

(114 + 108) mod 256 222 Þ

(115 + 74) mod 256 189 ½

(105 + 82) mod 256 187 »

(116 + 107) mod 256 223 ß

(97 + 77) mod 256 174 ®

(115 + 97) mod 256 212 Ô

(32 + 51) mod 256 83 S

(83 + 94) mod 256 177 ±

(97 + 98) mod 256 195 Ã

(110 + 145) mod 256 255 Î

(97 + 55) mod 256 152 ˜

(116 + 91) mod 256 207 Ï

(97 + 55) mod 256 312 Ù

(32 + 105) mod 256 137 ‰

(68 + 56) mod 256 124 |

(104 + 45) mod 256 149 •

(97 + 86) mod 256 183 ·

(114 + 113) mod 256 227 ã

(109 + 111) mod 256 220 Ü

(97 + 85) mod 256 182 ¶

Setelah proses enkripsi selesai, maka didapatlah ciphertext sebagai

berikut :

Ciphertext :

•®·×ÏÞ½»ß®ÔS±ÃΘÏÙ‰|Ç·ãܶ

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 55: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

39

4.3.2 Dekripsi

Pada proses dekripsi ini, ciphertext yang berupa huruf atau simbol

akan diubah menjadi bilangan desimal yang kemudian dikurangkan

dengan kunci acak yang juga diubah menjadi bilangan desimal setelah itu

dimodulo 256. Kemudian hasil pengurangan tersebut diubah ke huruf atau

simbol. Pengubahan dari huruf atau simbol menjadi bilangan desimal atau

sebaliknya ini menggunakan tabel ASCII (lampiran).

Dari proses enkripsi di atas akan didapatkan hasil enkripsi sebagai

berikut :

Contoh :

Ciphertext :

®·×ÏÞ½»ß®ÔS±ÃΘÏÙ‰ |Ç·ãܶ

Kunci :

8@NajlJRkMa3^b`7[xi8_VqoU

Berikut proses ciphertext dan kunci diubah menjadi bilangan

desimal berdasarkan tabel ASCII. Untuk mengubah karakter (no symbol)

pada ciphertext dapat dilihat di tabel ASCII dimana bilangan desimal

untuk huruf (no symbol) adalah 141. Kemudian untuk huruf ® bilangan

desimalnya adalah 174. Proses untuk semua ciphertext dilakukan seperti

itu berdasarkan tabel ASCII. Untuk proses kunci yang diubah menjadi

bilangan desimal dilakukan sama seperti untuk proses ciphertext

didapatkan hasil berupa bilangan desimal yang kemudian dikurangi lalu

dimodulo 256 seperti tabel di bawah ini :

Tabel 4.8 Proses Dekripsi

Pengurangan

(ci - ki) mod 256

Hasil

Pengurangan

Huruf /

Simbol

(141 - 56) mod 256 85 U

(174 - 64) mod 256 110 n

(183 - 78) mod 256 105 i

(215 - 97) mod 256 118 v

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 56: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

40

(207 - 106) mod 256 101 e

(222 - 108) mod 256 114 r

(189 - 74) mod 256 115 s

(187 - 82) mod 256 105 i

(223 - 107) mod 256 116 t

(174 - 77) mod 256 97 a

(212 - 97) mod 256 115 s

(83- 51) mod 256 32 (spasi)

(177 - 94) mod 256 83 S

(195 - 98) mod 256 97 a

(255 - 145) mod 256 110 n

(152 - 55) mod 256 97 a

(207 - 91) mod 256 116 t

(312 - 55) mod 256 97 a

(137 - 105) mod 256 32 (spasi)

(124 - 56) mod 256 68 D

(149 - 45) mod 256 104 h

(183 - 86) mod 256 97 a

(227 - 113) mod 256 114 r

(220 - 111) mod 256 109 m

(182 - 85) mod 256 97 a

Setelah proses dekripsi selesai, maka didapatlah plaintext yang

berisi sama dengan plaintext awal sebelum proses enkripsi sebagai berikut :

Plaintext :

Universitas Sanata Dharma

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 57: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

41

4.4 Analisa

Berdasarkan pada hasil pengujian yang dapat dilihat pada halaman

lampiran dihasilkan hasil benar dan salah. Hasil dikatakan benar jika ciphertext

yang didekripsi menghasilkan plaintext yang sama dengan berkas asli. Dan hasil

dikatakan salah jika ciphertext yang didekripsi tidak menghasilkan plaintext yang

sama dengan berkas asli atau tidak dapat dilakukan proses dekripsi. Di bawah ini

adalah tabel keberhasilan enkripsi dekripsi dokumen:

Tabel 4.9 Keberhasilan Enkripsi Dekripsi Format .txt

No Pengujian Hasil Keterangan

1 01.txt Benar -

2 02.txt Benar -

3 03.txt Benar -

4 04.txt Benar -

5 05.txt Benar -

6 06.txt Benar -

7 07.txt Benar -

8 08.txt Benar -

9 09.txt Benar -

10 10.txt Benar -

Tabel 4.10 Keberhasilan Enkripsi Dekripsi Format .doc

No Pengujian Hasil Keterangan

1 01.doc Benar -

2 02.doc Benar -

3 03.doc Benar -

4 04.doc Benar -

5 05.doc Benar -

6 06.doc Benar -

7 07.doc Benar -

8 08.doc Benar -

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 58: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

42

9 09.doc Benar -

10 10.doc Benar -

Dilihat dari tabel 4.9 dapat diketahui bahwa presentasi keberhasilan

enkripsi dekripsi dokumen untuk format .txt adalah 100% meski ada beberapa

simbol yang tidak terbaca. Dari tabel 4.10 dapat diketahui bahwa presentasi

keberhasilan enkripsi dekripsi dokumen untuk format .doc adalah 100% karena

adanya chipertext dan key yang memiliki panjang yang tidak sama sehingga tidak

dapat dilakukan proses dekripsi.

Sehingga dapat dianalisis bahwa program enkripsi dekripsi dokumen

dengan algoritma One Time Pad ternyata telah berjalan sesuai dengan algoritma

yang ada dan dapat berfungsi dengan baik meski ada beberapa pengujian dimana

beberapa huruf / simbol tidak terbaca diprogram saat akan dilakukan proses

dekripsi, tetapi hal itu tidak mengganggu proses dekripsi dan isi dokumen hasil

dekripsi tetap sama dengan berkas asli sebelum dilakukan proses enkripsi.

Berdasarkan pada hasil pengujian yang dapat dilihat pada halaman

lampiran dapat dilihat juga lamanya dari proses enkripsi dan lamanya dari proses

dekripsi. Dapat dilihat lamanya proses tidak bergantung pada format berkas

namun bergantung pada randomnya key yang didapatkan. Di bawah ini adalah

Tabel 4.11 dan Tabel 4.12 yang merupakan tabel lama proses enkripsi dekripsi

dokumen:

Tabel 4.11 Lama Proses Enkripsi

No Nama File Lama proses berformat

.txt .doc

1 file1 0,01072 0,00322326

2 file2 0,00244338 0,00358603

3 file3 0,00281067 0,00488268

4 file4 0,00488268 0,00282336

5 file5 0,00374817 0,00223776

6 file6 0,00401131 0,00228939

7 file7 0,00130253 0,00040896

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 59: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

43

8 file8 0,00162997 0,00191756

9 file9 0,00041847 0,00037001

10 file10 0,00024954 0,0003211

Rata - rata 0,00322 0,002206011

Tabel 4.12 Lama Proses Dekripsi

No Nama File Lama proses berformat

.txt .doc

1 file1 0,004684768 0,002998179

2 file2 0,002670282 0,001715574

3 file3 0,002136769 0,001937946

4 file4 0,000336955 0,001612767

5 file5 0,000454256 0,002295283

6 file6 0,005159856 0,001222822

7 file7 0,003030788 0,000376358

8 file8 0,002007693 0,002003617

9 file9 0,003011313 0,000502716

10 file10 0,002533507 0,001274905

Rata - rata 0,002602619 0,001594017

4.5 Kelebihan Algoritma One Time Pad

Kelebihan dari menggunakan Algoritma One Time Pad adalah sebagai

berikut :

1. Kunci acak yang hanya dapat digunakan sekali saja.

2. Melakukan proses enkripsi dekripsi dengan kunci yang berbeda akan

menghasilkan plaintext yang berbeda pula dari berkas asli.

3. Hanya cocok untuk pesan berukuran kecil.

4.6 Kekurangan Algoritma One Time Pad

Kekurangan dari menggunakan Algoritma One Time Pad adalah sebagai

berikut :

1. Adanya masalah dalam penyimpanan kunci, pendistribusian kunci

serta pengiriman kunci karena panjang kunci = panjang pesan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 60: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

44

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan pengujian yang dilakukan sebanyak 10 kali, maka

presentase keberhasilan untuk berkas dokumen berformat .txt adalah 100%

dimana berkas dokumen asli sama dengan berkas dokumen setelah proses

dekripsi. Presentase keberhasilan untuk berkas dokumen berformat .doc

adalah 100%. Maka dapat disimpulkan bahwa algoritma One Time Pad

dapat mengenkripsi dan mendekripsi berkas dokumen (.txt, .doc) dengan

benar. Lamanya proses enkripsi bergantung pada randomnya kunci acak

yang digunakan. Dibutuhkan waktu rata – rata 0,00322 detik untuk

melakukan proses enkripsi dokumen berformat .txt dan 0,002206011 detik

untuk melakukan proses enkripsi dokumen berformat .doc. Untuk proses

dekripsi dokumen berformat .txt dibutuhkan waktu rata – rata 0,002602619

detik dan 0,001594017 detik untuk melakukan proses dekripsi dokumen

berformat .doc.

5.2 Saran

Dari hasil analisis pada tugas akhir ini, penulis memberikan saran untuk

perbaikan dan pengembangan program lebih lanjut antara lain :

1. Program dapat melakukan enkripsi dekripsi dokumen untuk semua

tipe file.

2. Kunci yang tersimpan dapat terhapus otomatis setelah kunci

tersebut digunakan.

DAFTAR PUSTAKA

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 61: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

45

Astutik, Amelia. 2007. Algoritma Enkripsi One Time Pad untuk Sistem Pengamanan

Access Database Server. Skripsi. Semarang, Indonesia : Universitas Negeri

Semarang.

Bilqis. 2012. Analisis dan Perancangan Aplikasi Pesan Rahasia Menggunakan

Algoritma One TimePad (OTP) Dengan Pembangkit Bilangan Acak Linear

Congruential Generator (LCG). Skripsi. Medan, Indonesia : Universitas Sumatera

Utara

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.

Raharjo, Budi. 2002. Keamanan Sistem Informasi Berbasis Internet. PT. Insan

Indonesia –Bandung & PT INDOCISC –Jakarta.

Septian, Devi Agung. 2008. Simulasi Proses Pembangkitan Deret Bilangan Acak Semu

Menggunakan Generator Beth Piper Step dan Go (LSFR). Skripsi. Bandung :

UNIKOM.

Winaryo, Febryan Christy. 2014. Implementasi Modifikasi Kriptografi One Time Pad

(OTP) untuk Pengamanan Data File. Skripsi. Salatiga, Indonesia : Universitas

Kristen Satya Wacana.

www.ascii-code.com yang diakses pada tanggal 16 Februari 2015

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 62: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

46

LAMPIRAN

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 63: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

LAMPIRAN 1

Pengujian Program

A. Uji Coba Berkas Dokumen Berformat .txt

1. Pengujian 01 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 64: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

2. Pengujian 02 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 65: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

3. Pengujian 03 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 66: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

4. Pengujian 04 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 67: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

5. Pengujian 05 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 68: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

6. Pengujian 06 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 69: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

7. Pengujian 07 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 70: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

8. Pengujian 08 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 71: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

9. Pengujian 09 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 72: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

10. Pengujian 10 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 73: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

B. Uji Coba Berkas Dokumen Berformat .doc

1. Pengujian 01 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 74: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

2. Pengujian 02 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 75: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

3. Pengujian 03 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 76: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

4. Pengujian 04 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 77: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

5. Pengujian 05 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 78: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

6. Pengujian 06 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 79: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

7. Pengujian 07 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 80: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

8. Pengujian 08 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 81: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

9. Pengujian 09 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 82: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

10. Pengujian 10 :

Berkas asli

Key

Ciphertext, hasil proses enkripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 83: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

Plaintext, hasil proses dekripsi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 84: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

LAMPIRAN 2

Listing Program

1. Implementasi Kelas HalamanAwal.java

package skripsiotp;

public class HalamanAwal extends javax.swing.JFrame {

public HalamanAwal() { initComponents(); setLocationRelativeTo(this);

setTitle("Halaman Awal");

} @SuppressWarnings("unchecked")

private void initComponents() {

jPanel1 = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton();

jButton2 = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel();

javax.swing.GroupLayout jPanel1Layout = new

javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG) .addGap(0, 100, Short.MAX_VALUE) );

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 100, Short.MAX_VALUE)

);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 85: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jButton1.setText("Enkripsi"); jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); }

});

jButton2.setText("Dekripsi"); jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton2ActionPerformed(evt); }

}); jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 24));

jLabel1.setText("KEAMANAN DATA");

jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 14)); jLabel2.setText("Fidelis Asterina Surya P");

jLabel3.setFont(new java.awt.Font("Times New Roman", 1, 14)); jLabel3.setText("105314021");

jLabel4.setFont(new java.awt.Font("Times New Roman", 1, 18)); jLabel4.setText("Universitas Sanata Dharma");

javax.swing.GroupLayout layout = new

javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup() .addGap(169, 169, 169) .addComponent(jLabel3)

.addContainerGap(188, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup()

.addGap(130, 130, 130) .addComponent(jLabel2) .addContainerGap(141, Short.MAX_VALUE))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 86: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

.addGap(83, 83, 83)

.addComponent(jButton1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 95,

Short.MAX_VALUE) .addComponent(jButton2)

.addGap(104, 104, 104)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

.addContainerGap(102, Short.MAX_VALUE) .addComponent(jLabel1)

.addGap(103, 103, 103)) .addGroup(layout.createSequentialGroup() .addGap(94, 94, 94)

.addComponent(jLabel4) .addContainerGap(114, Short.MAX_VALUE))

); layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1,

javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 119, Short.MAX_VALUE)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BAS

ELINE) .addComponent(jButton2) .addComponent(jButton1))

.addGap(18, 18, 18) .addComponent(jLabel2)

.addGap(18, 18, 18) .addComponent(jLabel3) .addGap(36, 36, 36)

.addComponent(jLabel4) .addContainerGap())

); pack();

}// </editor-fold>

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 87: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

HalamanEnkripsi enk = new HalamanEnkripsi(); enk.setVisible(true); this.dispose();

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { HalamanDekripsi dek = new HalamanDekripsi();

dek.setVisible(true); this.dispose();

}

public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() {

public void run() { new HalamanAwal().setVisible(true); }

}); }

private javax.swing.JButton jButton1; private javax.swing.JButton jButton2;

private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JPanel jPanel1;

}

2. Implementasi Kelas HalamanEnkripsi.java

package skripsiotp; import java.io.BufferedReader;

import java.io.BufferedWriter; import java.io.File;

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream;

import java.io.FileReader; import java.io.FileWriter;

import java.io.IOException; import java.io.PrintWriter; import java.util.logging.Level;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 88: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

import java.util.logging.Logger;

import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.filechooser.FileNameExtensionFilter;

import org.apache.poi.hwpf.extractor.WordExtractor;

public class HalamanEnkripsi extends javax.swing.JFrame { /** Creates new form HalamanEnkripsi */

public HalamanEnkripsi() { initComponents();

} private OneTimePad otp = new OneTimePad();

@SuppressWarnings("unchecked")

private void initComponents() {

jLabel1 = new javax.swing.JLabel(); jPanel1 = new javax.swing.JPanel();

jLabel2 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); enkripsiKey = new javax.swing.JTextArea();

PlainButton = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel();

jScrollPane2 = new javax.swing.JScrollPane(); plainArea = new javax.swing.JTextArea(); GenerateKey = new javax.swing.JButton();

prosesEnkripsi = new javax.swing.JButton(); jLabel4 = new javax.swing.JLabel();

jScrollPane3 = new javax.swing.JScrollPane(); hasilEnkripsi = new javax.swing.JTextArea(); jLabel5 = new javax.swing.JLabel();

LamaEnkrip = new javax.swing.JTextField(); jLabel6 = new javax.swing.JLabel();

simpanEnkripsi = new javax.swing.JButton(); jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 14)); jLabel1.setText("Enkripsi");

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 89: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new

java.awt.Color(0, 0, 0))); jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 12));

jLabel2.setText("Plaintext");

enkripsiKey.setColumns(20); enkripsiKey.setRows(5); jScrollPane1.setViewportView(enkripsiKey);

PlainButton.setText("Browse");

PlainButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { PlainButtonActionPerformed(evt);

} });

jLabel3.setFont(new java.awt.Font("Times New Roman", 1, 12)); jLabel3.setText("Key");

plainArea.setColumns(20);

plainArea.setRows(5); jScrollPane2.setViewportView(plainArea);

GenerateKey.setText("Generate Key"); GenerateKey.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { GenerateKeyActionPerformed(evt); }

});

prosesEnkripsi.setText("Proses"); prosesEnkripsi.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

prosesEnkripsiActionPerformed(evt); }

}); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11));

jLabel4.setText("Output");

hasilEnkripsi.setColumns(20); hasilEnkripsi.setRows(5); jScrollPane3.setViewportView(hasilEnkripsi);

jLabel5.setFont(new java.awt.Font("Times New Roman", 0, 12));

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 90: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

jLabel5.setText("Lama Proses");

jLabel6.setText("detik");

simpanEnkripsi.setText("Simpan"); simpanEnkripsi.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { simpanEnkripsiActionPerformed(evt); }

});

jButton1.setText("Kembali"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt); }

}); javax.swing.GroupLayout jPanel1Layout = new

javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG) .addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel2) .addGap(336, 336, 336)) .addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(prosesEnkripsi)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 298, Short.MAX_VALUE) .addComponent(GenerateKey)

.addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel1Layout.createSequentialGroup() .addComponent(PlainButton) .addContainerGap())

.addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel5)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 91: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(LamaEnkrip, javax.swing.GroupLayout.PREFERRED_SIZE, 331,

javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel6) .addContainerGap(43, Short.MAX_VALUE))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()

.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 462, Short.MAX_VALUE) .addContainerGap())

.addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel4)

.addContainerGap(433, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()

.addComponent(jButton1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 326, Short.MAX_VALUE) .addComponent(simpanEnkripsi)

.addContainerGap()) .addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel3) .addContainerGap(451, Short.MAX_VALUE)) .addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 462, Short.MAX_VALUE)

.addContainerGap()))) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap() .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 462, Short.MAX_VALUE)

.addContainerGap())) );

jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI

NG) .addGroup(jPanel1Layout.createSequentialGroup()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 92: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

.addContainerGap()

.addComponent(jLabel2) .addGap(97, 97, 97) .addComponent(PlainButton)

.addGap(9, 9, 9) .addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1,

javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.BASELINE) .addComponent(prosesEnkripsi)

.addComponent(GenerateKey)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(jLabel4)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 68,

javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(25, 25, 25)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel5) .addComponent(LamaEnkrip,

javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jLabel6))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(simpanEnkripsi) .addComponent(jButton1)) .addContainerGap())

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 93: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()

.addGap(41, 41, 41) .addComponent(jScrollPane2,

javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(370, Short.MAX_VALUE)))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA

DING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel1))

.addContainerGap()) ); layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap())

);

pack(); }// </editor-fold>

private void PlainButtonActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 94: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

fileChooser.setVisible(true);

int returnValue = fileChooser.showOpenDialog(null); if (returnValue == JFileChooser.APPROVE_OPTION) { String namaFile = fileChooser.getSelectedFile().getPath();

String[] cut_namafile = namaFile.split("\\."); if (cut_namafile[1].equals("txt")) {

File txt = fileChooser.getSelectedFile(); String line = ""; try {

BufferedReader br = new BufferedReader(new FileReader(txt)); while ((line = br.readLine()) != null) {

plainArea.setText(line); } } catch (IOException ex) {

Logger.getLogger(HalamanEnkripsi.class.getName()).log(Level.SEVERE, null,

ex); } } else if (cut_namafile[1].equals("doc")) {

File doc = fileChooser.getSelectedFile();

try { WordExtractor we = new WordExtractor(new FileInputStream(doc)); } catch (IOException ex) {

Logger.getLogger(HalamanEnkripsi.class.getName()).log(Level.SEVERE, null,

ex); } }

} }

private void GenerateKeyActionPerformed(java.awt.event.ActionEvent evt) { String key = otp.genKey(plainArea.getText().length());

enkripsiKey.setText(key); }

private void prosesEnkripsiActionPerformed(java.awt.event.ActionEvent evt) { long t1 = System.nanoTime();

String message = plainArea.getText(); String key = enkripsiKey.getText();

if (message.length() != key.length()) { hasilEnkripsi.setText("Panjang pesan dan kunci harus sama!");

} else { hasilEnkripsi.setText(otp.encrypt(message, key));

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 95: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

}

long t2 = System.nanoTime(); LamaEnkrip.setText("" + (t2 - t1) * java.lang.Math.pow(10, -9)); }

private void simpanEnkripsiActionPerformed(java.awt.event.ActionEvent evt)

{ JFileChooser fileChooser = new JFileChooser(new File("E:/")); fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Word

(*.doc)", "doc")); fileChooser.setFileFilter(new FileNameExtensionFilter("Text Documents

(*.txt)", "txt")); FileOutputStream file_output_stream; int returnValue = fileChooser.showSaveDialog(this);

if (returnValue == JFileChooser.APPROVE_OPTION) {

String filename = fileChooser.getSelectedFile().getPath(); String extension = fileChooser.getFileFilter().getDescription(); if (extension.equals("Microsoft Word (*.doc)")) {

File f = new File(filename + ".doc"); try {

file_output_stream = new FileOutputStream(f); } catch (FileNotFoundException e) { e.printStackTrace();

return; }

try { BufferedWriter bfw = new BufferedWriter(new FileWriter(f)); String outputEnkripsi = hasilEnkripsi.getText();

String[] cut_namaFile = outputEnkripsi.split("\\n"); FileWriter outFile = new FileWriter(f);

PrintWriter out = new PrintWriter(outFile, true); for (int i = 0; i < cut_namaFile.length; i++) { out.println("" + cut_namaFile[i].toString());

} file_output_stream.close();

} catch (IOException ie) { JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Enkripsi Gagal Disimpan!!");

} } else if (extension.equals("Text Documents (*.txt)")) {

File f = new File(filename + ".txt"); try { file_output_stream = new FileOutputStream(f);

} catch (FileNotFoundException e) { e.printStackTrace();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 96: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

return;

} try { String outputEnkripsi = hasilEnkripsi.getText();

String[] cut_namafile = outputEnkripsi.split("\\n");

FileWriter outFile = new FileWriter(f); PrintWriter out = new PrintWriter(outFile, true); for (int i = 0; i < cut_namafile.length; i++) {

out.println("" + cut_namafile[i].toString()); }

file_output_stream.close(); } catch (IOException ie) {

JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Enkripsi Gagal Disimpan!!");

} } File outKey = new File(filename + ".key");

try { PrintWriter pw = new PrintWriter(outKey);

pw.write(enkripsiKey.getText()); pw.flush(); pw.close();

} catch (FileNotFoundException ex) { ex.printStackTrace();

} JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Enkripsi dan

Key Telah Berhasil Disimpan!! di " + filename); simpanEnkripsi.setEnabled(true);

} } private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

HalamanAwal awal = new HalamanAwal(); awal.setVisible(true);

this.dispose(); }

public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() {

public void run() { new HalamanEnkripsi().setVisible(true); }

}); }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 97: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

private javax.swing.JButton GenerateKey; private javax.swing.JTextField LamaEnkrip; private javax.swing.JButton PlainButton;

private javax.swing.JTextArea enkripsiKey; private javax.swing.JTextArea hasilEnkripsi;

private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2;

private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTextArea plainArea; private javax.swing.JButton prosesEnkripsi;

private javax.swing.JButton simpanEnkripsi;

} 3. Implementasi Kelas HalamanDekripsi.java

package skripsiotp;

import java.io.BufferedReader; import java.io.BufferedWriter;

import java.io.File; import java.io.FileFilter; import java.io.FileNotFoundException;

import java.io.FileOutputStream; import java.io.FileReader;

import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter;

import java.util.logging.Level; import java.util.logging.Logger;

import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.filechooser.FileNameExtensionFilter;

public class HalamanDekripsi extends javax.swing.JFrame { public HalamanDekripsi() {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 98: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

initComponents();

} private OneTimePad otp = new OneTimePad();

private void initComponents() { jLabel1 = new javax.swing.JLabel();

jPanel1 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel();

jScrollPane1 = new javax.swing.JScrollPane(); dekripsiKey = new javax.swing.JTextArea(); CipherButton = new javax.swing.JButton();

jLabel3 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane();

cipherArea = new javax.swing.JTextArea(); KeyButton = new javax.swing.JButton(); prosesDekripsi = new javax.swing.JButton();

jLabel4 = new javax.swing.JLabel(); jScrollPane3 = new javax.swing.JScrollPane();

hasilDekripsi = new javax.swing.JTextArea(); jLabel5 = new javax.swing.JLabel(); LamaDekripsi = new javax.swing.JTextField();

jLabel6 = new javax.swing.JLabel(); simpanDekripsi = new javax.swing.JButton();

jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N jLabel1.setText("Dekripsi");

jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N jLabel2.setText("Ciphertext");

dekripsiKey.setColumns(20);

dekripsiKey.setRows(5); jScrollPane1.setViewportView(dekripsiKey);

CipherButton.setText("Browse"); CipherButton.addActionListener(new java.awt.event.ActionListener() {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 99: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

public void actionPerformed(java.awt.event.ActionEvent evt) {

CipherButtonActionPerformed(evt); } });

jLabel3.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N

jLabel3.setText("Key"); cipherArea.setColumns(20);

cipherArea.setRows(5); jScrollPane2.setViewportView(cipherArea);

KeyButton.setText("Browse"); KeyButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { KeyButtonActionPerformed(evt);

} });

prosesDekripsi.setText("Proses"); prosesDekripsi.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { prosesDekripsiActionPerformed(evt); }

});

jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N jLabel4.setText("Output");

hasilDekripsi.setColumns(20); hasilDekripsi.setRows(5);

jScrollPane3.setViewportView(hasilDekripsi); jLabel5.setFont(new java.awt.Font("Times New Roman", 0, 12)); // NOI18N

jLabel5.setText("Lama Proses");

jLabel6.setText("detik"); simpanDekripsi.setText("Simpan");

simpanDekripsi.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {

simpanDekripsiActionPerformed(evt); } });

jButton1.setText("Kembali");

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 100: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); }

});

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout);

jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()

.addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel2) .addGap(336, 336, 336))

.addGroup(jPanel1Layout.createSequentialGroup() .addComponent(prosesDekripsi)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 330, Short.MAX_VALUE)

.addComponent(KeyButton) .addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel1Layout.createSequentialGroup() .addComponent(CipherButton)

.addContainerGap()) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel5)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(LamaDekripsi, javax.swing.GroupLayout.PREFERRED_SIZE, 331, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(jLabel6) .addContainerGap(43, Short.MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

jPanel1Layout.createSequentialGroup()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 101: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

.addComponent(jScrollPane3,

javax.swing.GroupLayout.DEFAULT_SIZE, 462, Short.MAX_VALUE) .addContainerGap()) .addGroup(jPanel1Layout.createSequentialGroup()

.addComponent(jLabel4) .addContainerGap(433, Short.MAX_VALUE))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addComponent(jButton1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,

326, Short.MAX_VALUE) .addComponent(simpanDekripsi) .addContainerGap())

.addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel3)

.addContainerGap(451, Short.MAX_VALUE)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 462, Short.MAX_VALUE) .addContainerGap())))

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()

.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 462, Short.MAX_VALUE) .addContainerGap()))

); jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()

.addComponent(jLabel2) .addGap(97, 97, 97) .addComponent(CipherButton)

.addGap(9, 9, 9) .addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1,

javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 102: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

.addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(prosesDekripsi) .addComponent(KeyButton))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel4)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 68, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(25, 25, 25)

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel5)

.addComponent(LamaDekripsi, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel6))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 25,

Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignm

ent.BASELINE) .addComponent(simpanDekripsi)

.addComponent(jButton1)) .addContainerGap())

.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addGap(41, 41, 41) .addComponent(jScrollPane2,

javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(377, Short.MAX_VALUE))) );

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 103: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

getContentPane().setLayout(layout);

layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup() .addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel1) .addComponent(jPanel1,

javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addContainerGap()) );

layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup() .addContainerGap()

.addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,

Short.MAX_VALUE)) );

pack(); }// </editor-fold>

private void CipherButtonActionPerformed(java.awt.event.ActionEvent evt) {

JFileChooser fileChooser = new JFileChooser(); fileChooser.setVisible(true); int returnValue = fileChooser.showOpenDialog(null);

if (returnValue == JFileChooser.APPROVE_OPTION) {

String namaFile = fileChooser.getSelectedFile().getPath(); String[] cut_namafile = namaFile.split("\\."); if (cut_namafile[1].equals("txt")) {

File txt = fileChooser.getSelectedFile();

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 104: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

String line = "";

try { BufferedReader br = new BufferedReader(new FileReader(txt)); while ((line = br.readLine()) != null) {

cipherArea.setText(line); }

} catch (IOException ex) { Logger.getLogger(HalamanDekripsi.class.getName()).log(Level.SEVERE, null,

ex); }

} else if (cut_namafile[1].equals("doc")) { File doc = fileChooser.getSelectedFile();

String line = ""; try {

BufferedReader br = new BufferedReader(new FileReader(doc)); while ((line = br.readLine()) != null) { cipherArea.setText(line);

} } catch (IOException ex) {

Logger.getLogger(HalamanDekripsi.class.getName()).log(Level.SEVERE, null, ex);

} }

} }

private void KeyButtonActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser();

FileNameExtensionFilter filter = new FileNameExtensionFilter("key file", "key"); fileChooser.addChoosableFileFilter(filter);

fileChooser.setFileFilter(filter); fileChooser.setVisible(true);

int returnValue = fileChooser.showOpenDialog(null); if (returnValue == JFileChooser.APPROVE_OPTION) {

File key = fileChooser.getSelectedFile(); try {

BufferedReader br = new BufferedReader(new FileReader(key)); String line = ""; while ((line = br.readLine()) != null) {

dekripsiKey.append(line); }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 105: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

br.close();

} catch (IOException ex) { Logger.getLogger(HalamanDekripsi.class.getName()).log(Level.SEVERE, null,

ex); }

}

} //

private void prosesDekripsiActionPerformed(java.awt.event.ActionEvent evt) { long t1 = System.nanoTime(); String message = cipherArea.getText();

String key = dekripsiKey.getText();

if (message.length() != key.length()) { hasilDekripsi.setText("Panjang pesan dan kunci harus sama!"); } else {

hasilDekripsi.setText(otp.encrypt(message, key)); hasilDekripsi.setText(otp.decrypt(message, key));

} long t2 = System.nanoTime(); LamaDekripsi.setText("" + (t2 - t1) * java.lang.Math.pow(10, -9));

}

private void simpanDekripsiActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(new File("E:/"));

fileChooser.setFileFilter(new FileNameExtensionFilter("Microsoft Word (*.doc)", "doc"));

fileChooser.setFileFilter(new FileNameExtensionFilter("Text Documents (*.txt)", "txt")); FileOutputStream file_output_stream;

int returnValue = fileChooser.showSaveDialog(this);

if (returnValue == JFileChooser.APPROVE_OPTION) { String filename = fileChooser.getSelectedFile().getPath(); String extension = fileChooser.getFileFilter().getDescription();

if (extension.equals("Microsoft Word (*.doc)")) { File f = new File(filename + ".doc");

try { file_output_stream = new FileOutputStream(f); } catch (FileNotFoundException e) {

e.printStackTrace(); return;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 106: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

}

try { BufferedWriter bfw = new BufferedWriter(new FileWriter(f)); String outputEnkripsi = hasilDekripsi.getText();

String[] cut_namaFile = outputEnkripsi.split("\\n"); FileWriter outFile = new FileWriter(f);

PrintWriter out = new PrintWriter(outFile, true); for (int i = 0; i < cut_namaFile.length; i++) { out.println("" + cut_namaFile[i].toString());

} file_output_stream.close();

} catch (IOException ie) { JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Dekripsi Gagal Disimpan!!");

} JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Dekripsi

Telah Berhasil Disimpan!! di " + filename); } else if (extension.equals("Text Documents (*.txt)")) { File f = new File(filename + ".txt");

try { file_output_stream = new FileOutputStream(f);

} catch (FileNotFoundException e) { e.printStackTrace(); return;

} try {

String outputDekripsi = hasilDekripsi.getText(); String[] cut_namafile = outputDekripsi.split("\\n");

FileWriter outFile = new FileWriter(f); PrintWriter out = new PrintWriter(outFile, true);

for (int i = 0; i < cut_namafile.length; i++) { out.println("" + cut_namafile[i].toString()); }

file_output_stream.close(); } catch (IOException ie) {

JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Dekripsi Gagal Disimpan!!"); }

JOptionPane.showMessageDialog(this, "Penyimpanan Hasil Dekripsi Telah Berhasil Disimpan!! di " + filename);

} simpanDekripsi.setEnabled(true); }

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 107: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

HalamanAwal awal = new HalamanAwal(); awal.setVisible(true); this.dispose();

}

public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

new HalamanDekripsi().setVisible(true); }

}); }

private javax.swing.JButton CipherButton; private javax.swing.JButton KeyButton;

private javax.swing.JTextField LamaDekripsi; private javax.swing.JTextArea cipherArea; private javax.swing.JTextArea dekripsiKey;

private javax.swing.JTextArea hasilDekripsi; private javax.swing.JButton jButton1;

private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3;

private javax.swing.JButton prosesDekripsi; private javax.swing.JButton simpanDekripsi;

}

4. Implementasi Kelas OneTimePad.java

package skripsiotp;

public class OneTimePad { public static String encrypt(String message, String key) {

if (message.length() != key.length()) { error("Lengths must be equal");

} int[] im = charArrayToInt(message.toCharArray()); int[] ik = charArrayToInt(key.toCharArray());

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 108: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

int[] data = new int[message.length()];

for (int i = 0; i < message.length(); i++) { data[i] = (im[i] + ik[i])%256;

}

return new String(intArrayToChar(data)); }

public static String decrypt(String message, String key) { if (message.length() != key.length()) {

error("Lengths must be equal"); } int[] im = charArrayToInt(message.toCharArray());

int[] ik = charArrayToInt(key.toCharArray()); int[] data = new int[message.length()];

for (int i = 0; i < message.length(); i++) { data[i] = (im[i] - ik[i])%256;

}

return new String(intArrayToChar(data)); }

public static String genKey(int length) { MersenneTwisterFast rand = new MersenneTwisterFast();

char[] key = new char[length]; for (int i = 0; i < length; i++) { key[i] = (char) rand.nextInt(132);

if ((int) key[i] < 97) { key[i] = (char) (key[i] + 72);

} if ((int) key[i] > 122) { key[i] = (char) (key[i] - 72);

} }

return new String(key); }

public static void main(String[] args) { }

private static int chartoInt(char c) { return (int) c;

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 109: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

private static char intToChar(int i) {

return (char) i; }

private static int[] charArrayToInt(char[] cc) { int[] ii = new int[cc.length];

for (int i = 0; i < cc.length; i++) { ii[i] = chartoInt(cc[i]); }

return ii; }

private static char[] intArrayToChar(int[] ii) { char[] cc = new char[ii.length];

for (int i = 0; i < ii.length; i++) { cc[i] = intToChar(ii[i]);

} return cc; }

private static void error(String msg) {

System.out.println(msg); System.exit(-1); }

}

5. Implementasi Kelas MersenneTwisterFast.java

package skripsiotp;

import java.math.BigInteger; import java.security.SecureRandom;

import java.util.Random;

import java.io.*; import java.util.*;

public strictfp class MersenneTwisterFast implements Serializable, Cloneable { // Serialization

private static final long serialVersionUID = -8219700664442619525L; // locked as of Version 15

// Period parameters private static final int N = 624;

private static final int M = 397; private static final int MATRIX_A = 0x9908b0df; // private static final * constant vector a

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 110: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

private static final int UPPER_MASK = 0x80000000; // most significant w-r

bits private static final int LOWER_MASK = 0x7fffffff; // least significant r bits // Tempering parameters

private static final int TEMPERING_MASK_B = 0x9d2c5680; private static final int TEMPERING_MASK_C = 0xefc60000;

private int mt[]; // the array for the state vector private int mti; // mti==N+1 means mt[N] is not initialized private int mag01[];

// a good initial seed (of int size, though stored in a long) //private static final long GOOD_SEED = 4357;

private double __nextNextGaussian; private boolean __haveNextNextGaussian;

/* We're overriding all internal data, to my knowledge, so this should be okay */

public Object clone() { try { MersenneTwisterFast f = (MersenneTwisterFast) (super.clone());

f.mt = (int[]) (mt.clone()); f.mag01 = (int[]) (mag01.clone());

return f; } catch (CloneNotSupportedException e) { throw new InternalError();

} // should never happen }

public boolean stateEquals(Object o) { if (o == this) {

return true; }

if (o == null || !(o instanceof MersenneTwisterFast)) { return false; }

MersenneTwisterFast other = (MersenneTwisterFast) o; if (mti != other.mti) {

return false; } for (int x = 0; x < mag01.length; x++) {

if (mag01[x] != other.mag01[x]) { return false;

} } for (int x = 0; x < mt.length; x++) {

if (mt[x] != other.mt[x]) { return false;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 111: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

}

} return true; }

/** Reads the entire state of the MersenneTwister RNG from the stream */

public void readState(DataInputStream stream) throws IOException { int len = mt.length; for (int x = 0; x < len; x++) {

mt[x] = stream.readInt(); }

len = mag01.length; for (int x = 0; x < len; x++) {

mag01[x] = stream.readInt(); }

mti = stream.readInt(); __nextNextGaussian = stream.readDouble();

__haveNextNextGaussian = stream.readBoolean(); }

/** Writes the entire state of the MersenneTwister RNG to the stream */ public void writeState(DataOutputStream stream) throws IOException {

int len = mt.length; for (int x = 0; x < len; x++) {

stream.writeInt(mt[x]); }

len = mag01.length; for (int x = 0; x < len; x++) {

stream.writeInt(mag01[x]); }

stream.writeInt(mti); stream.writeDouble(__nextNextGaussian);

stream.writeBoolean(__haveNextNextGaussian); }

/** * Constructor using the default seed.

*/ public MersenneTwisterFast() { this(System.currentTimeMillis());

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 112: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

/**

* Constructor using a given seed. Though you pass this seed in * as a long, it's best to make sure it's actually an integer. *

*/ public MersenneTwisterFast(long seed) {

setSeed(seed); }

/** * Constructor using an array of integers as seed.

* Your array must have a non-zero length. Only the first 624 integers * in the array are used; if the array is shorter than this then * integers are repeatedly used in a wrap-around fashion.

*/ public MersenneTwisterFast(int[] array) {

setSeed(array); }

/** * Initalize the pseudo random number generator. Don't

* pass in a long that's bigger than an int (Mersenne Twister * only uses the first 32 bits for its seed). */

synchronized public void setSeed(long seed) { // Due to a bug in java.util.Random clear up to 1.2, we're

// doing our own Gaussian variable. __haveNextNextGaussian = false;

mt = new int[N];

mag01 = new int[2]; mag01[0] = 0x0; mag01[1] = MATRIX_A;

mt[0] = (int) (seed & 0xffffffff);

for (mti = 1; mti < N; mti++) { mt[mti] = (1812433253 * (mt[mti - 1] ^ (mt[mti - 1] >>> 30)) + mti);

/* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ /* In the previous versions, MSBs of the seed affect */

/* only MSBs of the array mt[]. */ /* 2002/01/09 modified by Makoto Matsumoto */ // mt[mti] &= 0xffffffff;

/* for >32 bit machines */ }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 113: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

}

/** * Sets the seed of the MersenneTwister using an array of integers.

* Your array must have a non-zero length. Only the first 624 integers * in the array are used; if the array is shorter than this then

* integers are repeatedly used in a wrap-around fashion. */ synchronized public void setSeed(int[] array) {

if (array.length == 0) { throw new IllegalArgumentException("Array length must be greater than

zero"); } int i, j, k;

setSeed(19650218); i = 1;

j = 0; k = (N > array.length ? N : array.length); for (; k != 0; k--) {

mt[i] = (mt[i] ^ ((mt[i - 1] ^ (mt[i - 1] >>> 30)) * 1664525)) + array[j] + j; /* non linear */

// mt[i] &= 0xffffffff; /* for WORDSIZE > 32 machines */ i++; j++;

if (i >= N) { mt[0] = mt[N - 1];

i = 1; } if (j >= array.length) {

j = 0; }

} for (k = N - 1; k != 0; k--) { mt[i] = (mt[i] ^ ((mt[i - 1] ^ (mt[i - 1] >>> 30)) * 1566083941)) - i; /* non

linear */ // mt[i] &= 0xffffffff; /* for WORDSIZE > 32 machines */

i++; if (i >= N) { mt[0] = mt[N - 1];

i = 1; }

} mt[0] = 0x80000000; /* MSB is 1; assuring non-zero initial array */ }

public int nextInt() {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 114: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

int y;

if (mti >= N) // generate N words at one time {

int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster for (kk = 0; kk < N - M; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; }

y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y)

y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y) y ^= (y << 15) & TEMPERING_MASK_C; //

TEMPERING_SHIFT_T(y) y ^= (y >>> 18); // TEMPERING_SHIFT_L(y)

return y; }

public short nextShort() { int y;

if (mti >= N) // generate N words at one time

{ int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 115: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; } y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK);

mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y)

y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y) y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y)

y ^= (y >>> 18); // TEMPERING_SHIFT_L(y)

return (short) (y >>> 16); }

public char nextChar() { int y;

if (mti >= N) // generate N words at one time {

int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster for (kk = 0; kk < N - M; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; }

y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y)

y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 116: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

y ^= (y << 15) & TEMPERING_MASK_C; //

TEMPERING_SHIFT_T(y) y ^= (y >>> 18); // TEMPERING_SHIFT_L(y)

return (char) (y >>> 16); }

public boolean nextBoolean() { int y;

if (mti >= N) // generate N words at one time

{ int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; }

y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

y = mt[mti++];

y ^= y >>> 11; // TEMPERING_SHIFT_U(y) y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y) y ^= (y << 15) & TEMPERING_MASK_C; //

TEMPERING_SHIFT_T(y) y ^= (y >>> 18); // TEMPERING_SHIFT_L(y)

return (boolean) ((y >>> 31) != 0); }

/** This generates a coin flip with a probability <tt>probability</tt>

of returning true, else returning false. <tt>probability</tt> must be between 0.0 and 1.0, inclusive. Not as precise a random real event as nextBoolean(double), but twice as fast. To explicitly

use this, remember you may need to cast to float first. */ public boolean nextBoolean(float probability) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 117: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

int y;

if (probability < 0.0f || probability > 1.0f) { throw new IllegalArgumentException("probability must be between 0.0

and 1.0 inclusive."); }

if (probability == 0.0f) { return false; // fix half-open issues } else if (probability == 1.0f) {

return true; // fix half-open issues }

if (mti >= N) // generate N words at one time { int kk;

final int[] mt = this.mt; // locals are slightly faster final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1]; }

for (; kk < N - 1; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1];

} y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK);

mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1]; mti = 0;

}

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y) y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y)

y ^= (y >>> 18); // TEMPERING_SHIFT_L(y) return (y >>> 8) / ((float) (1 << 24)) < probability;

}

/** This generates a coin flip with a probability <tt>probability</tt> of returning true, else returning false. <tt>probability</tt> must be between 0.0 and 1.0, inclusive. */

public boolean nextBoolean(double probability) { int y;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 118: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

int z;

if (probability < 0.0 || probability > 1.0) { throw new IllegalArgumentException("probability must be between 0.0

and 1.0 inclusive."); }

if (probability == 0.0) { return false; // fix half-open issues } else if (probability == 1.0) {

return true; // fix half-open issues }

if (mti >= N) // generate N words at one time { int kk;

final int[] mt = this.mt; // locals are slightly faster final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1]; }

for (; kk < N - 1; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1];

} y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK);

mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1]; mti = 0;

}

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y) y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y)

y ^= (y >>> 18); // TEMPERING_SHIFT_L(y) if (mti >= N) // generate N words at one time

{ int kk;

final int[] mt = this.mt; // locals are slightly faster final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 119: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

mt[kk] = mt[kk + M] ^ (z >>> 1) ^ mag01[z & 0x1];

} for (; kk < N - 1; kk++) { z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (z >>> 1) ^ mag01[z & 0x1]; }

z = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (z >>> 1) ^ mag01[z & 0x1];

mti = 0; }

z = mt[mti++]; z ^= z >>> 11; // TEMPERING_SHIFT_U(z)

z ^= (z << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(z) z ^= (z << 15) & TEMPERING_MASK_C; //

TEMPERING_SHIFT_T(z) z ^= (z >>> 18); // TEMPERING_SHIFT_L(z)

/* derived from nextDouble documentation in jdk 1.2 docs, see top */ return ((((long) (y >>> 6)) << 27) + (z >>> 5)) / (double) (1L << 53) <

probability; }

public byte nextByte() { int y;

if (mti >= N) // generate N words at one time {

int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster for (kk = 0; kk < N - M; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; }

y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 120: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y) y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y)

y ^= (y >>> 18); // TEMPERING_SHIFT_L(y) return (byte) (y >>> 24);

}

public void nextBytes(byte[] bytes) { int y;

for (int x = 0; x < bytes.length; x++) { if (mti >= N) // generate N words at one time

{ int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; }

y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

y = mt[mti++];

y ^= y >>> 11; // TEMPERING_SHIFT_U(y) y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y)

y ^= (y >>> 18); // TEMPERING_SHIFT_L(y) bytes[x] = (byte) (y >>> 24);

} }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 121: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

public long nextLong() { int y; int z;

if (mti >= N) // generate N words at one time

{ int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; }

y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

y = mt[mti++];

y ^= y >>> 11; // TEMPERING_SHIFT_U(y) y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y) y ^= (y << 15) & TEMPERING_MASK_C; //

TEMPERING_SHIFT_T(y) y ^= (y >>> 18); // TEMPERING_SHIFT_L(y)

if (mti >= N) // generate N words at one time {

int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster for (kk = 0; kk < N - M; kk++) {

z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (z >>> 1) ^ mag01[z & 0x1];

} for (; kk < N - 1; kk++) { z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (z >>> 1) ^ mag01[z & 0x1]; }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 122: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

z = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK);

mt[N - 1] = mt[M - 1] ^ (z >>> 1) ^ mag01[z & 0x1]; mti = 0;

}

z = mt[mti++]; z ^= z >>> 11; // TEMPERING_SHIFT_U(z) z ^= (z << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(z)

z ^= (z << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(z)

z ^= (z >>> 18); // TEMPERING_SHIFT_L(z) return (((long) y) << 32) + (long) z;

}

/** Returns a long drawn uniformly from 0 to n-1. Suffice it to say, n must be > 0, or an IllegalArgumentException is raised. */ public long nextLong(long n) {

if (n <= 0) { throw new IllegalArgumentException("n must be positive, got: " + n);

} long bits, val;

do { int y;

int z; if (mti >= N) // generate N words at one time

{ int kk;

final int[] mt = this.mt; // locals are slightly faster final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1]; } for (; kk < N - 1; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1];

} y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 123: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

}

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y)

y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y) y ^= (y >>> 18); // TEMPERING_SHIFT_L(y)

if (mti >= N) // generate N words at one time

{ int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (z >>> 1) ^ mag01[z & 0x1];

} for (; kk < N - 1; kk++) {

z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (z >>> 1) ^ mag01[z & 0x1]; }

z = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (z >>> 1) ^ mag01[z & 0x1];

mti = 0; }

z = mt[mti++];

z ^= z >>> 11; // TEMPERING_SHIFT_U(z) z ^= (z << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(z)

z ^= (z << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(z)

z ^= (z >>> 18); // TEMPERING_SHIFT_L(z) bits = (((((long) y) << 32) + (long) z) >>> 1);

val = bits % n; } while (bits - val + (n - 1) < 0);

return val; }

/** Returns a random double in the half-open range from [0.0,1.0). Thus 0.0 is a valid

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 124: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

result but 1.0 is not. */

public double nextDouble() { int y; int z;

if (mti >= N) // generate N words at one time

{ int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; }

y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

y = mt[mti++];

y ^= y >>> 11; // TEMPERING_SHIFT_U(y) y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y) y ^= (y << 15) & TEMPERING_MASK_C; //

TEMPERING_SHIFT_T(y) y ^= (y >>> 18); // TEMPERING_SHIFT_L(y)

if (mti >= N) // generate N words at one time {

int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster for (kk = 0; kk < N - M; kk++) {

z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (z >>> 1) ^ mag01[z & 0x1];

} for (; kk < N - 1; kk++) { z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (z >>> 1) ^ mag01[z & 0x1]; }

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 125: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

z = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK);

mt[N - 1] = mt[M - 1] ^ (z >>> 1) ^ mag01[z & 0x1]; mti = 0;

}

z = mt[mti++]; z ^= z >>> 11; // TEMPERING_SHIFT_U(z) z ^= (z << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(z)

z ^= (z << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(z)

z ^= (z >>> 18); // TEMPERING_SHIFT_L(z) /* derived from nextDouble documentation in jdk 1.2 docs, see top */

return ((((long) (y >>> 6)) << 27) + (z >>> 5)) / (double) (1L << 53); }

/** Returns a double in the range from 0.0 to 1.0, possibly inclusive of 0.0 and 1.0 themselves. Thus:

<p><table border=0>

<th><td>Expression<td>Interval <tr><td>nextDouble(false, false)<td>(0.0, 1.0) <tr><td>nextDouble(true, false)<td>[0.0, 1.0)

<tr><td>nextDouble(false, true)<td>(0.0, 1.0] <tr><td>nextDouble(true, true)<td>[0.0, 1.0]

</table> <p>This version preserves all possible random values in the double range.

*/ public double nextDouble(boolean includeZero, boolean includeOne) {

double d = 0.0; do { d = nextDouble(); // grab a value, initially from half-open

[0.0, 1.0) if (includeOne && nextBoolean()) {

d += 1.0; // if includeOne, with 1/2 probability, push to [1.0, 2.0) } } while ((d > 1.0) || // everything above 1.0 is always invalid

(!includeZero && d == 0.0)); // if we're not including zero, 0.0 is invalid

return d; }

public double nextGaussian() { if (__haveNextNextGaussian) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 126: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

__haveNextNextGaussian = false;

return __nextNextGaussian; } else { double v1, v2, s;

do { int y;

int z; int a; int b;

if (mti >= N) // generate N words at one time

{ int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; }

y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

y = mt[mti++];

y ^= y >>> 11; // TEMPERING_SHIFT_U(y) y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y)

y ^= (y >>> 18); // TEMPERING_SHIFT_L(y) if (mti >= N) // generate N words at one time

{ int kk;

final int[] mt = this.mt; // locals are slightly faster final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 127: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

mt[kk] = mt[kk + M] ^ (z >>> 1) ^ mag01[z & 0x1];

} for (; kk < N - 1; kk++) { z = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (z >>> 1) ^ mag01[z & 0x1]; }

z = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (z >>> 1) ^ mag01[z & 0x1];

mti = 0; }

z = mt[mti++]; z ^= z >>> 11; // TEMPERING_SHIFT_U(z)

z ^= (z << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(z)

z ^= (z << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(z) z ^= (z >>> 18); // TEMPERING_SHIFT_L(z)

if (mti >= N) // generate N words at one time

{ int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { a = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (a >>> 1) ^ mag01[a & 0x1];

} for (; kk < N - 1; kk++) {

a = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (a >>> 1) ^ mag01[a & 0x1]; }

a = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (a >>> 1) ^ mag01[a & 0x1];

mti = 0; }

a = mt[mti++];

a ^= a >>> 11; // TEMPERING_SHIFT_U(a) a ^= (a << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(a)

a ^= (a << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(a)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 128: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

a ^= (a >>> 18); // TEMPERING_SHIFT_L(a)

if (mti >= N) // generate N words at one time {

int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster for (kk = 0; kk < N - M; kk++) {

b = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (b >>> 1) ^ mag01[b & 0x1];

} for (; kk < N - 1; kk++) { b = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (b >>> 1) ^ mag01[b & 0x1]; }

b = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (b >>> 1) ^ mag01[b & 0x1];

mti = 0; }

b = mt[mti++]; b ^= b >>> 11; // TEMPERING_SHIFT_U(b)

b ^= (b << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(b)

b ^= (b << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(b) b ^= (b >>> 18); // TEMPERING_SHIFT_L(b)

/* derived from nextDouble documentation in jdk 1.2 docs, see top */

v1 = 2 * (((((long) (y >>> 6)) << 27) + (z >>> 5)) / (double) (1L << 53)) - 1;

v2 = 2 * (((((long) (a >>> 6)) << 27) + (b >>> 5)) / (double) (1L << 53))

- 1; s = v1 * v1 + v2 * v2; } while (s >= 1 || s == 0);

double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s) / s); __nextNextGaussian = v2 * multiplier;

__haveNextNextGaussian = true; return v1 * multiplier; }

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 129: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

/** Returns a random float in the half-open range from [0.0f,1.0f). Thus 0.0f is

a valid result but 1.0f is not. */ public float nextFloat() {

int y;

if (mti >= N) // generate N words at one time { int kk;

final int[] mt = this.mt; // locals are slightly faster final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1]; }

for (; kk < N - 1; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1];

} y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK);

mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1]; mti = 0;

}

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y) y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y)

y ^= (y >>> 18); // TEMPERING_SHIFT_L(y) return (y >>> 8) / ((float) (1 << 24));

}

/** Returns a float in the range from 0.0f to 1.0f, possibly inclusive of 0.0f and 1.0f themselves. Thus:

<p><table border=0> <th><td>Expression<td>Interval

<tr><td>nextFloat(false, false)<td>(0.0f, 1.0f) <tr><td>nextFloat(true, false)<td>[0.0f, 1.0f) <tr><td>nextFloat(false, true)<td>(0.0f, 1.0f]

<tr><td>nextFloat(true, true)<td>[0.0f, 1.0f] </table>

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 130: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

<p>This version preserves all possible random values in the float range. */ public float nextFloat(boolean includeZero, boolean includeOne) {

float d = 0.0f; do {

d = nextFloat(); // grab a value, initially from half-open [0.0f, 1.0f) if (includeOne && nextBoolean()) {

d += 1.0f; // if includeOne, with 1/2 probability, push to [1.0f, 2.0f) }

} while ((d > 1.0f) || // everything above 1.0f is always invalid (!includeZero && d == 0.0f)); // if we're not including zero, 0.0f is invalid

return d; }

/** Returns an integer drawn uniformly from 0 to n-1. Suffice it to say, n must be > 0, or an IllegalArgumentException is raised. */

public int nextInt(int n) { if (n <= 0) {

throw new IllegalArgumentException("n must be positive, got: " + n); }

if ((n & -n) == n) // i.e., n is a power of 2 {

int y; if (mti >= N) // generate N words at one time

{ int kk;

final int[] mt = this.mt; // locals are slightly faster final int[] mag01 = this.mag01; // locals are slightly faster

for (kk = 0; kk < N - M; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1]; } for (; kk < N - 1; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1];

} y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 131: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

}

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y)

y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y) y ^= (y >>> 18); // TEMPERING_SHIFT_L(y)

return (int) ((n * (long) (y >>> 1)) >> 31);

} int bits, val;

do { int y;

if (mti >= N) // generate N words at one time {

int kk; final int[] mt = this.mt; // locals are slightly faster

final int[] mag01 = this.mag01; // locals are slightly faster for (kk = 0; kk < N - M; kk++) {

y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); mt[kk] = mt[kk + M] ^ (y >>> 1) ^ mag01[y & 0x1];

} for (; kk < N - 1; kk++) { y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);

mt[kk] = mt[kk + (M - N)] ^ (y >>> 1) ^ mag01[y & 0x1]; }

y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); mt[N - 1] = mt[M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];

mti = 0; }

y = mt[mti++]; y ^= y >>> 11; // TEMPERING_SHIFT_U(y)

y ^= (y << 7) & TEMPERING_MASK_B; // TEMPERING_SHIFT_S(y)

y ^= (y << 15) & TEMPERING_MASK_C; // TEMPERING_SHIFT_T(y) y ^= (y >>> 18); // TEMPERING_SHIFT_L(y)

bits = (y >>> 1);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 132: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

val = bits % n;

} while (bits - val + (n - 1) < 0); return val; }

/**

* Tests the code. */ public static void main(String args[]) {

int j;

MersenneTwisterFast r; // CORRECTNESS TEST

// COMPARE WITH http://www.math.keio.ac.jp/matumoto/CODES/MT2002/mt19937ar.out

r = new MersenneTwisterFast(new int[]{0x123, 0x234, 0x345, 0x456}); System.out.println("Output of MersenneTwisterFast with new (2002/1/26)

seeding mechanism"); for (j = 0; j < 1000; j++) {

// first, convert the int from signed to "unsigned" long l = (long) r.nextInt(); if (l < 0) {

l += 4294967296L; // max int value }

String s = String.valueOf(l); while (s.length() < 10) { s = " " + s; // buffer

} System.out.print(s + " ");

if (j % 5 == 4) { System.out.println(); }

}

// SPEED TEST final long SEED = 4357;

int xx;

long ms; System.out.println("\nTime to test grabbing 100000000 ints");

Random rr = new Random(SEED); xx = 0;

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 133: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

ms = System.currentTimeMillis();

for (j = 0; j < 100000000; j++) { xx += rr.nextInt(); }

System.out.println("java.util.Random: " + (System.currentTimeMillis() - ms) + " Ignore this: " + xx);

r = new MersenneTwisterFast(SEED); ms = System.currentTimeMillis();

xx = 0; for (j = 0; j < 100000000; j++) {

xx += r.nextInt(); } System.out.println("Mersenne Twister Fast: " + (System.currentTimeMillis()

- ms) + " Ignore this: " + xx);

// TEST TO COMPARE TYPE CONVERSION BETWEEN // MersenneTwisterFast.java AND MersenneTwister.java

System.out.println("\nGrab the first 1000 booleans"); r = new MersenneTwisterFast(SEED);

for (j = 0; j < 1000; j++) { System.out.print(r.nextBoolean() + " "); if (j % 8 == 7) {

System.out.println(); }

} if (!(j % 8 == 7)) { System.out.println();

}

System.out.println("\nGrab 1000 booleans of increasing probability using nextBoolean(double)"); r = new MersenneTwisterFast(SEED);

for (j = 0; j < 1000; j++) { System.out.print(r.nextBoolean((double) (j / 999.0)) + " ");

if (j % 8 == 7) { System.out.println(); }

} if (!(j % 8 == 7)) {

System.out.println(); }

System.out.println("\nGrab 1000 booleans of increasing probability using nextBoolean(float)");

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 134: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

r = new MersenneTwisterFast(SEED);

for (j = 0; j < 1000; j++) { System.out.print(r.nextBoolean((float) (j / 999.0f)) + " "); if (j % 8 == 7) {

System.out.println(); }

} if (!(j % 8 == 7)) { System.out.println();

}

byte[] bytes = new byte[1000]; System.out.println("\nGrab the first 1000 bytes using nextBytes"); r = new MersenneTwisterFast(SEED);

r.nextBytes(bytes); for (j = 0; j < 1000; j++) {

System.out.print(bytes[j] + " "); if (j % 16 == 15) { System.out.println();

} }

if (!(j % 16 == 15)) { System.out.println(); }

byte b;

System.out.println("\nGrab the first 1000 bytes -- must be same as nextBytes"); r = new MersenneTwisterFast(SEED);

for (j = 0; j < 1000; j++) { System.out.print((b = r.nextByte()) + " ");

if (b != bytes[j]) { System.out.print("BAD "); }

if (j % 16 == 15) { System.out.println();

} } if (!(j % 16 == 15)) {

System.out.println(); }

System.out.println("\nGrab the first 1000 shorts"); r = new MersenneTwisterFast(SEED);

for (j = 0; j < 1000; j++) { System.out.print(r.nextShort() + " ");

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 135: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

if (j % 8 == 7) {

System.out.println(); } }

if (!(j % 8 == 7)) { System.out.println();

} System.out.println("\nGrab the first 1000 ints");

r = new MersenneTwisterFast(SEED); for (j = 0; j < 1000; j++) {

System.out.print(r.nextInt() + " "); if (j % 4 == 3) { System.out.println();

} }

if (!(j % 4 == 3)) { System.out.println(); }

System.out.println("\nGrab the first 1000 ints of different sizes");

r = new MersenneTwisterFast(SEED); int max = 1; for (j = 0; j < 1000; j++) {

System.out.print(r.nextInt(max) + " "); max *= 2;

if (max <= 0) { max = 1; }

if (j % 4 == 3) { System.out.println();

} } if (!(j % 4 == 3)) {

System.out.println(); }

System.out.println("\nGrab the first 1000 longs"); r = new MersenneTwisterFast(SEED);

for (j = 0; j < 1000; j++) { System.out.print(r.nextLong() + " ");

if (j % 3 == 2) { System.out.println(); }

} if (!(j % 3 == 2)) {

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 136: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

System.out.println();

} System.out.println("\nGrab the first 1000 longs of different sizes");

r = new MersenneTwisterFast(SEED); long max2 = 1;

for (j = 0; j < 1000; j++) { System.out.print(r.nextLong(max2) + " "); max2 *= 2;

if (max2 <= 0) { max2 = 1;

} if (j % 4 == 3) { System.out.println();

} }

if (!(j % 4 == 3)) { System.out.println(); }

System.out.println("\nGrab the first 1000 floats");

r = new MersenneTwisterFast(SEED); for (j = 0; j < 1000; j++) { System.out.print(r.nextFloat() + " ");

if (j % 4 == 3) { System.out.println();

} } if (!(j % 4 == 3)) {

System.out.println(); }

System.out.println("\nGrab the first 1000 doubles"); r = new MersenneTwisterFast(SEED);

for (j = 0; j < 1000; j++) { System.out.print(r.nextDouble() + " ");

if (j % 3 == 2) { System.out.println(); }

} if (!(j % 3 == 2)) {

System.out.println(); }

System.out.println("\nGrab the first 1000 gaussian doubles"); r = new MersenneTwisterFast(SEED);

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 137: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

for (j = 0; j < 1000; j++) {

System.out.print(r.nextGaussian() + " "); if (j % 3 == 2) { System.out.println();

} }

if (!(j % 3 == 2)) { System.out.println(); }

}

}

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 138: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

LAMPIRAN 3

Kode ASCII – Tabel ASCII

DEC OCT HEX BIN Symbol HTML

Number HTML Name

Description

0 000 00 00000000 NUL &#000; Null char

1 001 01 00000001 SOH &#001; Start of Heading

2 002 02 00000010 STX &#002; Start of Text

3 003 03 00000011 ETX &#003; End of Text

4 004 04 00000100 EOT &#004; End of Transmission

5 005 05 00000101 ENQ &#005; Enquiry

6 006 06 00000110 ACK &#006; Acknowledgment

7 007 07 00000111 BEL &#007; Bell

8 010 08 00001000 BS &#008; Back Space

9 011 09 00001001 HT &#009; Horizontal Tab

10 012 0A 00001010 LF &#010; Line Feed

11 013 0B 00001011 VT &#011; Vertical Tab

12 014 0C 00001100 FF &#012; Form Feed

13 015 0D 00001101 CR &#013; Carriage Return

14 016 0E 00001110 SO &#014; Shift Out / X-On

15 017 0F 00001111 SI &#015; Shift In / X-Off

16 020 10 00010000 DLE &#016; Data Line Escape

17 021 11 00010001 DC1 &#017; Device Control 1 (oft. XON)

18 022 12 00010010 DC2 &#018; Device Control 2

19 023 13 00010011 DC3 &#019; Device Control 3 (oft.

XOFF)

20 024 14 00010100 DC4 &#020; Device Control 4

21 025 15 00010101 NAK &#021; Negative Acknowledgement

22 026 16 00010110 SYN &#022; Synchronous Idle

23 027 17 00010111 ETB &#023; End of Transmit Block

24 030 18 00011000 CAN &#024; Cancel

25 031 19 00011001 EM &#025; End of Medium

26 032 1A 00011010 SUB &#026; Substitute

27 033 1B 00011011 ESC &#027; Escape

28 034 1C 00011100 FS &#028; File Separator

29 035 1D 00011101 GS &#029; Group Separator

30 036 1E 00011110 RS &#030; Record Separator

31 037 1F 00011111 US &#031; Unit Separator

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 139: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

32 040 20 00100000 &#32; Space

33 041 21 00100001 ! &#33; Exclamation mark

34 042 22 00100010 " &#34; &quot; Double quotes (or speech marks)

35 043 23 00100011 # &#35; Number

36 044 24 00100100 $ &#36; Dollar

37 045 25 00100101 % &#37; Procenttecken

38 046 26 00100110 & &#38; &amp; Ampersand

39 047 27 00100111 ' &#39; Single quote

40 050 28 00101000 ( &#40; Open parenthesis (or

open bracket)

41 051 29 00101001 ) &#41; Close parenthesis (or

close bracket)

42 052 2A 00101010 * &#42; Asterisk

43 053 2B 00101011 + &#43; Plus

44 054 2C 00101100 , &#44; Comma

45 055 2D 00101101 - &#45; Hyphen

46 056 2E 00101110 . &#46; Period, dot or full stop

47 057 2F 00101111 / &#47; Slash or divide

48 060 30 00110000 0 &#48; Zero

49 061 31 00110001 1 &#49; One

50 062 32 00110010 2 &#50; Two

51 063 33 00110011 3 &#51; Three

52 064 34 00110100 4 &#52; Four

53 065 35 00110101 5 &#53; Five

54 066 36 00110110 6 &#54; Six

55 067 37 00110111 7 &#55; Seven

56 070 38 00111000 8 &#56; Eight

57 071 39 00111001 9 &#57; Nine

58 072 3A 00111010 : &#58; Colon

59 073 3B 00111011 ; &#59; Semicolon

60 074 3C 00111100 < &#60; &lt; Less than (or open

angled bracket)

61 075 3D 00111101 = &#61; Equals

62 076 3E 00111110 > &#62; &gt; Greater than (or

close angled bracket)

63 077 3F 00111111 ? &#63; Question mark

64 100 40 01000000 @ &#64; At symbol

65 101 41 01000001 A &#65; Uppercase A

66 102 42 01000010 B &#66; Uppercase B

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 140: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

67 103 43 01000011 C &#67; Uppercase C

68 104 44 01000100 D &#68; Uppercase D

69 105 45 01000101 E &#69; Uppercase E

70 106 46 01000110 F &#70; Uppercase F

71 107 47 01000111 G &#71; Uppercase G

72 110 48 01001000 H &#72; Uppercase H

73 111 49 01001001 I &#73; Uppercase I

74 112 4A 01001010 J &#74; Uppercase J

75 113 4B 01001011 K &#75; Uppercase K

76 114 4C 01001100 L &#76; Uppercase L

77 115 4D 01001101 M &#77; Uppercase M

78 116 4E 01001110 N &#78; Uppercase N

79 117 4F 01001111 O &#79; Uppercase O

80 120 50 01010000 P &#80; Uppercase P

81 121 51 01010001 Q &#81; Uppercase Q

82 122 52 01010010 R &#82; Uppercase R

83 123 53 01010011 S &#83; Uppercase S

84 124 54 01010100 T &#84; Uppercase T

85 125 55 01010101 U &#85; Uppercase U

86 126 56 01010110 V &#86; Uppercase V

87 127 57 01010111 W &#87; Uppercase W

88 130 58 01011000 X &#88; Uppercase X

89 131 59 01011001 Y &#89; Uppercase Y

90 132 5A 01011010 Z &#90; Uppercase Z

91 133 5B 01011011 [ &#91; Opening bracket

92 134 5C 01011100 \ &#92; Backslash

93 135 5D 01011101 ] &#93; Closing bracket

94 136 5E 01011110 ^ &#94; Caret - circumflex

95 137 5F 01011111 _ &#95; Underscore

96 140 60 01100000 ` &#96; Grave accent

97 141 61 01100001 a &#97; Lowercase a

98 142 62 01100010 b &#98; Lowercase b

99 143 63 01100011 c &#99; Lowercase c

100 144 64 01100100 d &#100; Lowercase d

101 145 65 01100101 e &#101; Lowercase e

102 146 66 01100110 f &#102; Lowercase f

103 147 67 01100111 g &#103; Lowercase g

104 150 68 01101000 h &#104; Lowercase h

105 151 69 01101001 i &#105; Lowercase i

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 141: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

106 152 6A 01101010 j &#106; Lowercase j

107 153 6B 01101011 k &#107; Lowercase k

108 154 6C 01101100 l &#108; Lowercase l

109 155 6D 01101101 m &#109; Lowercase m

110 156 6E 01101110 n &#110; Lowercase n

111 157 6F 01101111 o &#111; Lowercase o

112 160 70 01110000 p &#112; Lowercase p

113 161 71 01110001 q &#113; Lowercase q

114 162 72 01110010 r &#114; Lowercase r

115 163 73 01110011 s &#115; Lowercase s

116 164 74 01110100 t &#116; Lowercase t

117 165 75 01110101 u &#117; Lowercase u

118 166 76 01110110 v &#118; Lowercase v

119 167 77 01110111 w &#119; Lowercase w

120 170 78 01111000 x &#120; Lowercase x

121 171 79 01111001 y &#121; Lowercase y

122 172 7A 01111010 z &#122; Lowercase z

123 173 7B 01111011 { &#123; Opening brace

124 174 7C 01111100 | &#124; Vertical bar

125 175 7D 01111101 } &#125; Closing brace

126 176 7E 01111110 ~ &#126; Equivalency sign -

tilde

127 177 7F 01111111 &#127; Delete

128 200 80 10000000 € &#128; &euro; Euro sign

129 201 81 10000001

130 202 82 10000010 ‚ &#130; &sbquo; Single low-9

quotation mark

131 203 83 10000011 ƒ &#131; &fnof; Latin small letter f

with hook

132 204 84 10000100 „ &#132; &bdquo; Double low-9

quotation mark

133 205 85 10000101 … &#133; &hellip; Horizontal ellipsis

134 206 86 10000110 † &#134; &dagger; Dagger

135 207 87 10000111 ‡ &#135; &Dagger; Double dagger

136 210 88 10001000 ˆ &#136; &circ; Modifier letter

circumflex accent

137 211 89 10001001 ‰ &#137; &permil; Per mille sign

138 212 8A 10001010 Š &#138; &Scaron; Latin capital letter S with caron

139 213 8B 10001011 ‹ &#139; &lsaquo; Single left-pointing angle quotation

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 142: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

140 214 8C 10001100 Π&#140; &OElig; Latin capital ligature OE

141 215 8D 10001101

142 216 8E 10001110 Ž &#142; Latin captial letter Z

with caron

143 217 8F 10001111

144 220 90 10010000

145 221 91 10010001 ‘ &#145; &lsquo; Left single quotation

mark

146 222 92 10010010 ’ &#146; &rsquo; Right single quotation mark

147 223 93 10010011 “ &#147; &ldquo; Left double quotation mark

148 224 94 10010100 ” &#148; &rdquo; Right double quotation mark

149 225 95 10010101 • &#149; &bull; Bullet

150 226 96 10010110 – &#150; &ndash; En dash

151 227 97 10010111 — &#151; &mdash; Em dash

152 230 98 10011000 ˜ &#152; &tilde; Small tilde

153 231 99 10011001 ™ &#153; &trade; Trade mark sign

154 232 9A 10011010 š &#154; &scaron; Latin small letter S

with caron

155 233 9B 10011011 › &#155; &rsaquo; Single right-pointing angle quotation mark

156 234 9C 10011100 œ &#156; &oelig; Latin small ligature oe

157 235 9D 10011101

158 236 9E 10011110 ž &#158; Latin small letter z

with caron

159 237 9F 10011111 Ÿ &#159; &yuml; Latin capital letter Y

with diaeresis

160 240 A0 10100000 &#160; &nbsp; Non-breaking space

161 241 A1 10100001 ¡ &#161; &iexcl; Inverted exclamation

mark

162 242 A2 10100010 ¢ &#162; &cent; Cent sign

163 243 A3 10100011 £ &#163; &pound; Pound sign

164 244 A4 10100100 ¤ &#164; &curren; Currency sign

165 245 A5 10100101 ¥ &#165; &yen; Yen sign

166 246 A6 10100110 ¦ &#166; &brvbar; Pipe, Broken vertical

bar

167 247 A7 10100111 § &#167; &sect; Section sign

168 250 A8 10101000 ¨ &#168; &uml; Spacing diaeresis - umlaut

169 251 A9 10101001 © &#169; &copy; Copyright sign

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 143: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

170 252 AA 10101010 ª &#170; &ordf; Feminine ordinal indicator

171 253 AB 10101011 « &#171; &laquo; Left double angle quotes

172 254 AC 10101100 ¬ &#172; &not; Not sign

173 255 AD 10101101 ­ &#173; &shy; Soft hyphen

174 256 AE 10101110 ® &#174; &reg; Registered trade mark sign

175 257 AF 10101111 ¯ &#175; &macr; Spacing macron -

overline

176 260 B0 10110000 ° &#176; &deg; Degree sign

177 261 B1 10110001 ± &#177; &plusmn; Plus-or-minus sign

178 262 B2 10110010 ² &#178; &sup2; Superscript two -

squared

179 263 B3 10110011 ³ &#179; &sup3; Superscript three -

cubed

180 264 B4 10110100 ´ &#180; &acute; Acute accent -

spacing acute

181 265 B5 10110101 µ &#181; &micro; Micro sign

182 266 B6 10110110 ¶ &#182; &para; Pilcrow sign -

paragraph sign

183 267 B7 10110111 · &#183; &middot; Middle dot - Georgian

comma

184 270 B8 10111000 ¸ &#184; &cedil; Spacing cedilla

185 271 B9 10111001 ¹ &#185; &sup1; Superscript one

186 272 BA 10111010 º &#186; &ordm; Masculine ordinal

indicator

187 273 BB 10111011 » &#187; &raquo; Right double angle

quotes

188 274 BC 10111100 ¼ &#188; &frac14; Fraction one quarter

189 275 BD 10111101 ½ &#189; &frac12; Fraction one half

190 276 BE 10111110 ¾ &#190; &frac34; Fraction three

quarters

191 277 BF 10111111 ¿ &#191; &iquest; Inverted question mark

192 300 C0 11000000 À &#192; &Agrave; Latin capital letter A with grave

193 301 C1 11000001 Á &#193; &Aacute; Latin capital letter A with acute

194 302 C2 11000010 Â &#194; &Acirc; Latin capital letter A with circumflex

195 303 C3 11000011 Ã &#195; &Atilde; Latin capital letter A

with tilde

196 304 C4 11000100 Ä &#196; &Auml; Latin capital letter A

with diaeresis

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 144: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

197 305 C5 11000101 Å &#197; &Aring; Latin capital letter A with ring above

198 306 C6 11000110 Æ &#198; &AElig; Latin capital letter AE

199 307 C7 11000111 Ç &#199; &Ccedil; Latin capital letter C

with cedilla

200 310 C8 11001000 È &#200; &Egrave; Latin capital letter E

with grave

201 311 C9 11001001 É &#201; &Eacute; Latin capital letter E

with acute

202 312 CA 11001010 Ê &#202; &Ecirc; Latin capital letter E with circumflex

203 313 CB 11001011 Ë &#203; &Euml; Latin capital letter E with diaeresis

204 314 CC 11001100 Ì &#204; &Igrave; Latin capital letter I with grave

205 315 CD 11001101 Í &#205; &Iacute; Latin capital letter I with acute

206 316 CE 11001110 Î &#206; &Icirc; Latin capital letter I

with circumflex

207 317 CF 11001111 Ï &#207; &Iuml; Latin capital letter I

with diaeresis

208 320 D0 11010000 Ð &#208; &ETH; Latin capital letter

ETH

209 321 D1 11010001 Ñ &#209; &Ntilde; Latin capital letter N

with tilde

210 322 D2 11010010 Ò &#210; &Ograve; Latin capital letter O

with grave

211 323 D3 11010011 Ó &#211; &Oacute; Latin capital letter O with acute

212 324 D4 11010100 Ô &#212; &Ocirc; Latin capital letter O with circumflex

213 325 D5 11010101 Õ &#213; &Otilde; Latin capital letter O with tilde

214 326 D6 11010110 Ö &#214; &Ouml; Latin capital letter O with diaeresis

215 327 D7 11010111 × &#215; &times; Multiplication sign

216 330 D8 11011000 Ø &#216; &Oslash; Latin capital letter O

with slash

217 331 D9 11011001 Ù &#217; &Ugrave; Latin capital letter U with grave

218 332 DA 11011010 Ú &#218; &Uacute; Latin capital letter U with acute

219 333 DB 11011011 Û &#219; &Ucirc; Latin capital letter U with circumflex

220 334 DC 11011100 Ü &#220; &Uuml; Latin capital letter U with diaeresis

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 145: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

221 335 DD 11011101 Ý &#221; &Yacute; Latin capital letter Y with acute

222 336 DE 11011110 Þ &#222; &THORN; Latin capital letter THORN

223 337 DF 11011111 ß &#223; &szlig; Latin small letter sharp s - ess-zed

224 340 E0 11100000 à &#224; &agrave; Latin small letter a

with grave

225 341 E1 11100001 á &#225; &aacute; Latin small letter a

with acute

226 342 E2 11100010 â &#226; &acirc; Latin small letter a

with circumflex

227 343 E3 11100011 ã &#227; &atilde; Latin small letter a

with tilde

228 344 E4 11100100 ä &#228; &auml; Latin small letter a

with diaeresis

229 345 E5 11100101 å &#229; &aring; Latin small letter a

with ring above

230 346 E6 11100110 æ &#230; &aelig; Latin small letter ae

231 347 E7 11100111 ç &#231; &ccedil; Latin small letter c

with cedilla

232 350 E8 11101000 è &#232; &egrave; Latin small letter e

with grave

233 351 E9 11101001 é &#233; &eacute; Latin small letter e

with acute

234 352 EA 11101010 ê &#234; &ecirc; Latin small letter e

with circumflex

235 353 EB 11101011 ë &#235; &euml; Latin small letter e with diaeresis

236 354 EC 11101100 ì &#236; &igrave; Latin small letter i with grave

237 355 ED 11101101 í &#237; &iacute; Latin small letter i with acute

238 356 EE 11101110 î &#238; &icirc; Latin small letter i with circumflex

239 357 EF 11101111 ï &#239; &iuml; Latin small letter i with diaeresis

240 360 F0 11110000 ð &#240; &eth; Latin small letter eth

241 361 F1 11110001 ñ &#241; &ntilde; Latin small letter n with tilde

242 362 F2 11110010 ò &#242; &ograve; Latin small letter o with grave

243 363 F3 11110011 ó &#243; &oacute; Latin small letter o with acute

244 364 F4 11110100 ô &#244; &ocirc; Latin small letter o with circumflex

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 146: IMPLEMENTASI ENKRIPSI DAN DEKRIPSI … · Random key is generated using a random num ber generator, ... BAB I PENDAHULUAN ... 2.5 Pembangkit Bilangan Acak

245 365 F5 11110101 õ &#245; &otilde; Latin small letter o with tilde

246 366 F6 11110110 ö &#246; &ouml; Latin small letter o with diaeresis

247 367 F7 11110111 ÷ &#247; &divide; Division sign

248 370 F8 11111000 ø &#248; &oslash; Latin small letter o

with slash

249 371 F9 11111001 ù &#249; &ugrave; Latin small letter u

with grave

250 372 FA 11111010 ú &#250; &uacute; Latin small letter u with acute

251 373 FB 11111011 û &#251; &ucirc; Latin small letter u with circumflex

252 374 FC 11111100 ü &#252; &uuml; Latin small letter u with diaeresis

253 375 FD 11111101 ý &#253; &yacute; Latin small letter y with acute

254 376 FE 11111110 Ϸ &#254; &thorn; Latin small letter

thorn

255 377 FF 11111111 ÿ &#255; &yuml; Latin small letter y

with diaeresis

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJIPLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI