APLIKASI CHIPERTEXT GENERATOR MENGGUNAKAN ALGORITMA VIGENERE BERBASIS MODIFIKASI FIBONACCI.

(1)

TUGAS AKHIR

Oleh:

REZA PUTRA DEWANGGA

NPM : 0734010232

JURUSAN TEKNIK INFORMATIKA

FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” JAWA TIMUR

SURABAYA


(2)

semua Rahmat, Taufik, dan Hidayah-Nya yang telah diberikan kepada penulis sehingga dapat menyelesaikan Skripsi ini dengan baik.

Dalam menyelesaikan Skripsi ini, penulis berpegang pada teori serta bimbingan dari para dosen pembimbing Skripsi. Dan berbagai pihak yang banyak membantu hingga terselesaikannya Skripsi ini. Skripsi merupakan salah satu syarat bagi mahasiswa untuk menyelesaikan program studi Sarjana Strata Satu (S-1) di Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Pembangunan Nasional “Veteran” Jawa Timur.

Terwujudnya Skripsi ini adalah berkat usaha, kerja keras serta dukungan dari berbagai pihak. Dan tanpa menghilangkan rasa hormat, penulis mengucapkan banyak terima kasih kepada pihak-pihak yang telah membantu penulis antara lain:

1. Bapak Prof. Dr. Ir. Teguh Soedarto, MP Selaku Rektor UPN “Veteran” Jawa Timur.

2. Bapak Ir. Sutiyono, MT Selaku Dekan Fakultas Teknologi Industri UPN “Veteran” Jawa Timur.

3. Ibu Dr. Ir. Ni Ketut Sari, MT Selaku Kepala Jurusan Teknik Informatika UPN “Veteran” Jawa Timur.


(3)

beban kegiatan akademik untuk memberikan bimbingan dan kesempatan penyusun untuk berkreasi dalam proses pembuatan Skripsi ini.

5. Bapak Chrystia Aji Putra, S.Kom selaku pembimbing II yang memberi banyak masukan dan petunjuk khususnya mulai cara memprogram sampai menjadi sebuah aplikasi.

6. Bapak dan Ibu dosen Teknik Informatika yang telah memberikan ilmunya kepada penulis selama kuliah.

7. Ayahanda tercinta, yang merupakan lelaki terhebat yang pernah aku temui dan ibunda tersayang yang juga merupakan perempuan yang kesabarannya tiada bandingnya didunia ini. Adik-adik yang sangat menyayangi aku, terima kasih atas semuanya, aku tidak akan bisa seperti ini tanpa keluargaku. Aku beruntung terlahir dikeluarga ini.

8. Teman-teman seperti Surya(yayak) yang menjadi teman pertama, menjadi my bound brother, Abraham yang merupakan teman SMA sampe sekarang dan sebagai guru sepak bola maupun guru catur baik nyata maupun tidak nyata, Bos Yudha yang merupakan teman dari kecil sampe sampai jadi bos ditempat saya bekerja, Lek Agung guru poker yang selalu memberikan chip dan mengajarkan mencari uang dari poker, Dwi dan Erina(Duyung) yang selalu memberi makanan kalau g ada dana, Argo (Jhikey) teman sekaligus guru music dan bahasa inggris


(4)

semoga bisa masuk 10 besar Indonesia idol tidak hanya 50 besar.

9. Teman-teman kuliah khususnya,,,,,Aris(Brewok) tanpa dirimu q g akan bisa skripsi, kamu telah mengajarkan segala tentang komputer maupun bahasa PHP mulai dari dasar semoga kamu jadi pemilik software house bukan hanya pegawai, Fajar(Bro) “Bersama kita bisa” sungguh kata-kata mutiara yang berarti dalam hidupku, Dzulfikar(Mas Injunk) terima kasih telah memberi dukungan baik moril maupun titip absen, Dimas(Disukai mas-mas) teman pertama dari ospek senasib sependeritaan semoga tetap berteman kita, Tony S.Kom, Satya S.Kom, Novita S.Kom, Misbahlul Munir(Ibet) S.Kom, Dony S.Kom, Wahyu P.(Qyeb) S.Kom, Duwy(Gondrong) S.Kom, Ahmad Nur Setyo Chandra S.Kom, Rizal Febriyanto(Komeng) S.Kom, Anisa(Super Partner) S.Kom Aryo dan Vivi (UPN berdua), Lingga S.Kom. Para anggota TF-E semoga bisa jadi sarjana yang berguna bagi nusa dan bangsa. Teman-teman seperjuangan dalam menyusun skripsi Abet, Endang, Kiky, Panjul, Indra (Bos), Rino (Erno/Pataya) ayo len-jelen. Seluruh teman-teman KKN TM 31 khususnya Achmad Hariyanto(Aha) Derema Berkaber, Dahlia thanks sampai saat ini selalu kamu yang ngeluarin duit, Astria(Trea) S.Kom semoga bisa jadi bupati seperti anda. Anak-anak Kriposoft dengan adanya komunitas ini diInformatika bisa menjadi penolong bagi mahasiswa-mahasiswa untuk saling berbagi ilmu dan meningkatkan ilmu


(5)

sukses.

10.Teman- teman mahasiswa dan teman-teman diluar kampus yang tak bisa saya sebutkan satu persatu,,,,,terimakasih atas semua dukungan selama ini dan terimakasi atas pertemanannya……

Penulis menyadari bahwa penulisan ini masih jauh dari kesempurnaan, karena tiada gading yang tak retak. Oleh sebab itu, penulis mengharapkan kritik dan saran yang bersifat membangun guna terciptanya kesempurnaan penulisan ini selanjutnya. Semoga penulisan ini dapat menambah wawasan serta ilmu pengetahuan bagi siapa saja yang membacanya.

Surabaya, Mei 2012


(6)

ABSTRAK ... i

KATA PENGANTAR ... ii

DAFTAR ISI ... vi

DAFTAR GAMBAR ... ix

DAFTAR TABEL ... xi

BAB I PENDAHULUAN ... 1

1.1.Latar Belakang ... 1

1.2.Perumusan Masalah ... 2

1.3.Tujuan ... 3

1.4.Batasan Masalah ... 3

1.5.Manfaat ... 4

1.6.Metodologi Penulisan ... 4

1.7.Sistematika Penulisan ... 6

BAB II TINJAUAN PUSTAKA ... 8

2.1.Kriptografi ... 8

2.1.1.Enkripsi dan Dekripsi ... 9

2.1.2.Teknik Kriptografi ... 10

2.2.Algoritma Vigenere ... 12

2.2.1.Metode Kasiski ... 16

2.3.Deret Fibonacci ... 23

2.3.1.Misteri Fibonaci ... 24

2.4.PHP ... 28

2.5.CSS ... 31

2.6.HTML ... 34


(7)

2.8.Jquery ... 39

2.9.Xampp ... 43

BAB III ANALISIS DAN PERANCANGAN SISTEM ... 46

3.1.Analisis Sistem ... 46

3.2.Perancangan Sistem ... 47

3.3.Perancangan Proses ... 49

3.3.1.Proses Modifikasi Fibonacci ... 49

3.3.2.Proses Alur Program ... 52

3.4.Desain Antar Muka ... 55

3.4.1.Desain Menu ... 56

3.4.2.Desain Tampilan Muka Aplikasi ... 59

BAB IV IMPLEMENTASI DAN UJI COBA ... 69

4.1.Lingkungan Implementasi ... 69

4.1.1.Implementasi Perangkat Keras... 69

4.1.2.Implementasi Perangkat Lunak ... 70

4.2.Implementasi Sistem ... 70

4.3.Implementasi Program ... 73

4.3.1.Implementasi Antar Muka ... 74

4.3.2.Form Home ... 74

4.3.3.Form Enkripsi ... 75

4.3.4.Form Dekripsi ... 78

4.4.Pengujian Program ... 81

4.4.1.Uji Coba Enkripsi ... 82

4.4.2.Uji Coba Dekripsi ... 86

4.5 Hasil Uji Coba Program ... 90


(8)

5.2.Saran ... 94


(9)

Gambar 3.2 Gambar Alur Enkripsi Dengan Modifikasi ... 48

Gambar 3.3 Gambar Alur Program ... 53

Gambar 3.4 Gambar Alur Desain Menu Program ... 56

Gambar 3.5 Gambar Rancangan Tampilan Home ... 59

Gambar 3.6 Gambar Rancangan Tampilan Encrypt ... 60

Gambar 3.7 Gambar Rancangan Menu Encrypt ... 61

Gambar 3.8 Gambar Rancangan Encrypt Manual ... 62

Gambar 3.9 Gambar Rancangan Encrypt Auto ... 63

Gambar 3.10 Gambar Rancangan Tampilan Decrypt ... 64

Gambar 3.11 Gambar Rancangan Menu Decrypt ... 65

Gambar 3.12 Gambar Rancangan Decrypt Manual ... 66

Gambar 3.13 Gambar Rancangan Decrypt Auto ... 67

Gambar 4.1 Pseudocode Enkripsi ... 71

Gambar 4.2 Pseudocode Dekripsi ... 73

Gambar 4.3 Form Home ... 75

Gambar 4.4 Form Enkripsi ... 75

Gambar 4.5 Form Pemilihan Menu Enkripsi ... 76

Gambar 4.6 Form Proses Enkripsi Manual ... 77

Gambar 4.7 Form Proses Enkripsi Auto ... 78

Gambar 4.8 Form Dekripsi ... 78

Gambar 4.9 Form Pemilihan Menu Dekripsi ... 79

Gambar 4.10 Form Proses Dekripsi Manual ... 80

Gambar 4.11 Form Proses Dekripsi Auto ... 81

Gambar 4.12 Ketik Teks Plain ... 82

Gambar 4.13 Tekan Encrypt ... 83

Gambar 4.14 Simpan Encrypt ... 83


(10)

Gambar 4.18 Simpan Encrypt Auto ... 85

Gambar 4.19 Ketik Teks Chiper ... 86

Gambar 4.20 Tekan Decrypt ... 87

Gambar 4.21 Simpan Decrypt ... 87

Gambar 4.22 Pilih Teks Dekrip ... 88

Gambar 4.23 Hasil Open Dekrip... 88

Gambar 4.24 Hasil Decrypt Auto ... 89

Gambar 4.25 Simpan Decrypt Auto ... 89


(11)

Tabel 2.2. Tabel Dekripsi Vigenere ... 15 Tabel 2.3 Tabel Modus Vigenere ... 21 Tabel 2.4 Tabel Kunci Vigenere ... 22


(12)

Pembimbing II : Chrystia Aji Putra, S.Kom Penyusun : Reza Putra Dewangga

ABSTRAK

Pada saat ini perkembangan teknologi semakin pesat diberbagai bidang termasuk dibidang informasi. Oleh sebab itu keamanan informasi (information security) merupakan hal yang penting dan cara untuk mengamankan pesan yang dikirim tersebut melalui enkripsi. Enkripsi merupakan suatu proses untuk mengubah suatu kata yang bisa dibaca (plaintext) menjadi suatu data rahasia yang tidak dapat dibaca (chipertext). Tetapi karena semakin berkembangnya zaman maka algoritma-algoritma untuk mengenkripsi data rahasia tersebut ditemukan kelemahan-kelemahan.

Salah satu algoritma yang telah ditemukan kelemahannya oleh Friedrich Kasiski yaitu algoritma vigenere. Yang memiliki kelemahan yaitu kata kuncinya masih bisa ditebak dengan metode analisis frekuensi. Dikarenakan algoritma

vigenere ditemukan kelemahannya, oleh sebab itu maka perlu dilakukan permodifikasian sehingga kelemahan yang ada pada algoritma tersebut tertutupi. Dan cara untuk menutupi kelemahan tersebut dilakukan dengan menambahkan perhitungan fibonacci, tetapi karena bilangan fibonacci sudah umum diketahui maka rumus fibonacci tersebut dilakukan permodifikasian. Dan untuk menerapkannya dibuatlah aplikasi chipertext generator menggunakan algoritma

vigenere berbasis modifikasi fibonacci.

Dengan dibuatnya aplikasi chipertext generator menggunakan algoritma

vigenere berbasis modifikasi fibonacci maka dapat mengatasi kelemahan yang ada pada algoritma vigenere sehingga dapat menjaga kerahasian pesan.

Keyword : keamanan informasi (information security), plaintext, chipertext vigenere, fibonacci


(13)

1.1. Latar Belakang

Dengan melihat perkembangan teknologi dan informasi yang kini semakin pesat di berbagai bidang, maka secara tidak langsung hal tersebut mempengaruhi sistem perdagangan, transaksi dan sistem informasi selama ini. Terutama di era internet ini, semua informasi terkirim suatu jaringan dengan tingkat keamanan yang rendah. Untuk itulah peranan teknologi keamanan informasi benar-benar dibutuhkan. Keamanan Informasi (Information Security) merupakan bagian yang sangat penting dari sebuah jaringan komputer terutama yang berhubung dengan internet. Sebuah sistem yang mempermudah dan memanjakan pengguna tidak akan berguna tanpa didukung oleh sistem keamanan yang tinggi. Oleh karena itu, informasi atau data rahasia yang akan dikirim harus disandikan agar tidak dapat dibaca oleh orang lain.

Teknik untuk mengubah informasi yang dapat dibaca/teks asli (plain text) menjadi kode-kode tertentu disebut sebagai enkripsi (encryption) dan hasilnya disebut chipertext, sedangkan teknik untuk mengubah chipertext menjadi plain text disebut deskripsi (decryption). Algoritma yang digunakan untuk proses enkripsi dan deskripsi adalah Algoritma kriptografi (cryptographic algorithm) atau sering disebut chiper. Algoritma kriptografi ini bekerja dengan menggunkan kunci (key) seperti kata, nomor maupun frase tertentu. Jika dilakukan enkripsi pada plaintext yang sama dengan menggunakan kunci yang berbeda, maka akan menjadi chipertext yang berbeda.

Salah satu algoritma dari berbagai macam Algoritma kriptografi (cryptographic algorithm) adalah Algoritma Vigenere Chiper merupakan salah satu algoritma klasik


(14)

yang digunakan untuk menyembunyikan pesan berupa teks dari pihak yang tidak berhak dengan menggunakan teknik substitusi dimana tiap huruf pada plainteks akan disubstitusi menjadi huruf lain berdasarkan kunci yang digunakan. Berbeda dengan Caesar cipher, vigenere cipher adalah algoritma substitusi jamak dimana suatu huruf plainteks tidak selalu disubstitusi menjadi huruf yang sama, namun disubstitusi berdasarkan kunci yang digunakan.

Kelemahan algoritma vigenere cipher muncul jika panjang kunci lebih pendek dari panjang plainteksnya sehingga terdapat perulangan kunci yang digunakan untuk mengenkripsi plainteks tersebut. Kunci yang berulang tersebut menimbulkan celah berupa jumlah pergeseran yang sama untuk setiap plainteks yang disubstitusi oleh huruf pada kunci yang sama sehingga huruf-huruf pesan atau plainteks dapat dikelompokkan berdasarkan kunci yang digunakan. Karena terdapat kelompok huruf-huruf plainteks yang disubstitusi dengan huruf kunci yang sama karena perulangan kunci, maka tiap kelompok huruf-huruf tersebut dapat dikenakan metode analisis frekuensi terhadapnya.

Oleh sebab itu perlu dilakukan modifikasi agar memperkuat kelemahan dari algoritma vigenere, salah satu cara untuk memperkuatnya adalah dengan menggunakan modifikasi Fibonacci dimana seperti yang kita ketahui Fibonacci memiliki deret seperti (0,1,1,2,3,5,8,13,....) dengan adanya Fibonacci kita dapat menggunakan kunci yang acak yang panjangnya sama dengan plaintext (pendekatan OTP).

1.2. Perumusan Masalah

Permasalahan yang akan dipecahkan dalam kegiatan ini dapat dirumuskan sebagai berikut :


(15)

1).Bagaimana meminimalisir perulangan chipertext yang dihasilkan?

2).Dibagian mana kita meletakkan rumus fibonacci kedalam algoritma vigenere? 3).Bagaimana cara memodifikasi rumus fibonacci sehingga lebih dinamis?

4).Bagaimana cara agar menghasilkan chipertext yang kalimatnya tidak sama ketika diinputkan kata kunci ganjil maupun genap sehingga meminimalisir metode analisis frekuensi?

1.3. Tujuan

Adapun tujuan-tujuan dari dibuatnya penelitian mengenai aplikasi chipertext generator menggunakan algoritma vigenere berbasis modifikasi Fibonacci adalah : 1).Memperbaiki kelemahan pada algoritma vigenere, yang kelemahannya adalah

pengulangan kata kunci.

2).Meminimalisir chipertext berulang yang dihasilkan oleh algoritma vigenere.

3).Memodifikasi sebuah Algoritma Vigenere dengan deretan Fibonacci yang sudah di modifikasi.

4).Membangkitkan kata kunci berbasis bilangan fibonacci untuk menghilangkan perulangan kata kunci pada sandi vigenere

5).Membuat sebuah aplikasi yang dapat melakukan enkripsi dan deskripsi berdasarkan algoritma Vigenere yang sudah dimodifikasi dengan Fibonacci.

1.4. Batasan Masalah

Di dalam penulisan skripsi ini, agar pembahasan masalah sesuai dengan yang diinginkan dan tidak menyimpang dari apa yang semula dirumuskan, maka penulis menyertakan batasan masalah sebagai berikut :


(16)

1). Penelitian ini dilaksanakan pada file berekstensi *.txt.

2). Penelitian dilakukan pada plaintext berupa alphabet A hingga Z dan a hingga z, sementara karakter lain dalam ASCII akan diabaikan.

3). Penelitian menggunakan sandi vigenere.

4). Penyempurnaan kunci dilakukan dengan menggunakan modifikasi dari deret fibonacci.

5). Penelitian menggunakan bahasa pemrograman PHP 5

1.5. Manfaat

Jika aplikasi ini berjalan maka tingkat keamanan dalam mengenkripsi sebuah kata akan semaikin tinggi dan akan sulit dikriptanalisis, baik dengan analisis frekuensi, known-plaintext attack, maupun serangan lainnya. Dan juga dapat memperbaiki kelemahan yang ada pada sandi vigenere.

1.6. Metodologi Pembuatan Skripsi

Dalam pembuatan Tugas Akhir ini, penulis akan menjelaskan tentang metode yang digunakan selama penulis menyusun dan membuat laporan Tugas Akhir ini.

1). Studi Literatur

Mempelajari konsep atau metode yang akan digunakan sehingga dapat dijadikan panduan untuk merancang aplikasi ini dengan menggunakan PHP 5, serta mencari contoh-contoh apapun untuk membantu penyelesaian Tugas Akhir ini.


(17)

2). Survey atau Pengumpulan Data

Setelah mempelajari teori akan dilanjutkan survey ke orang yang berkecimpung dalam masalah jaringan. Disini kita mencari informasi mengenai hal apa saja yang berhubungan dengan keamanan jaringan

3). Perancangan Aplikasi

Pada tahap ini dibuat suatu perancangan aplikasi Chipertext generator menggunakan algoritma vigenere berbasis modifikasi fibonacci .

4). Pembangunan Aplikasi

Pada Tahap ini, aplikasi mulai dibangun sesuai dengan metode yang telah ditentukan dan perancangan yang telah dibuat sebelumnya dengan menggunakan PHP(Personal Home Page).

5). Testing dan Evaluasi

Pada tahap ini setelah aplikasi selesai dibuat maka dilakukan pengujian aplikasi untuk mengetahui apakah aplikasi tersebut telah bekerja dengan benar sesuai dengan konsep yang diajukan

6). Penyusunan Buku Tugas Akhir

Pada tahap ini dilakukan penyusunan laporan yang berisi dasar teori, dokumentasi dari hasil perancangan aplikasi Chipertext generator menggunakan algoritma vigenere berbasis modifikasi fibonacci dan hasil yang diperoleh selama mengerjakan tugas akhir. Juga difungsikan sebagai referensi para pembaca dalam mengembangkan Tugas Akhir lebih lanjut. 7). Pembuatan Kesimpulan


(18)

Pada tahap ini adalah bagian akhir pembuatan Tugas Akhir yang berisikan kesimpulan dan saran dari hasil pembuatan aplikasi yang diperoleh sesuai dengan dasar teori yang mendukung dalam pengerjaan aplikasi tersebut secara keseluruhan.

1.7. Sistematika Penulisan

Dalam pembuatan tugas akhir ini secara garis besar disusun dalam lima bab, dengan sistematika penulisan sebagai berikut :

BAB 1 : PENDAHULUAN

Bab ini berisi latar belakang masalah, tujuan penulisan, perumusan masalah, batasan masalah, metode penulisan, dan sistematika penulisan.

BAB 2 : TEORI PENUNJANG

Bab ini berisi teori-teori dasar yang digunakan sebagai penunjang dalam pembuatan tugas akhir ini.

BAB 3 : PERANCANGAN DAN PEMBUATAN

Bab ini berisi tentang perancangan perangkat lunak dan mekanik sistem yang akan dibuat.

BAB 4 : PENGUJIAN PROGRAM

Bab ini berisi data-data yang didapat dari pengujian program baik per-blok maupun secara keseluruhan.


(19)

BAB 5 : KESIMPULAN DAN SARAN

Bab ini merupakan bab penutup dalam tugas akhir, berisi kesimpulan dan saran dari tugas akhir ini.


(20)

BAB II

TINJUAN PUSTAKA

2.1 Kriptografi

Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita (Bruce Schneier, 1994). Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data (A. Menezes, P. van Oorschot and S. Vanstone , 1997). Tidak semua aspek keamanan informasi ditangani oleh kriptografi.

Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu :

1) Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi.

2) Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.

3) Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang


(21)

dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.

4) Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat.

5) Dalam kriptografi terdapat dua konsep utama yakni enkripsi dan dekripsi. Enkripsi adalah proses dimana informasi/data yang hendak dikirim diubah menjadi bentuk yang hampir tidak dikenali sebagai informasi awalnya dengan menggunakan algoritma tertentu. Dekripsi adalah kebalikan dari enkripsi yaitu mengubah kembali bentuk tersamar tersebut menjadi informasi awal.

(Sumber : http://id.wikipedia.org/wiki/Kriptografi)

2.1.1 Enkripsi dan Deskripsi

Enkripsi ialah suatu teknik atau proses pengacakan data yang biasa kita mengerti atau kata-kata yang biasa dipergunakan (plaintext) menjadi sebuah kata acak yang tidak bisa di mengerti oleh orang yang tidak mengetahui metode dari pengacakan tersebut (chipertext). Sedangkan Deskripsi adalah kebalikan dari enkripsi deskripsi merupakan proses penerjemahan data dari data yang tidak bisa dimengerti menjadi data yang bisa kita mengerti atau mengubah data yang sudah di enkripsi(chipertext) menjadi data aslinya(plaintext). Enkripsi sudah digunakan sejak zaman dahulu, enkripsi memiliki metode algoritma yang digunakan untuk mengatur proses yang digunakan untuk mengenkripsi pesan. Beberapa algoritma


(22)

dari enkripsi tersebut dirahasiakan oleh pengembangnya dan beberapa dibuat terbuka oleh umum.

Pada awal tahun 1970an, algoritma Data Encryption Standard diperkenalkan, yang menggunakan key 56 bit untuk mengenkripsi dan mendekripsikan informasi. DES membagi setiap pesan dalam blok-blok dan meng-encode setiap blok satu pada setiap waktu. DES diadopsi sebagai algoritma yang diakui untuk penggunaan US Federal, tetapi tidak lagi dianggap cukup aman karena sebuah key 56-bit bisa dibuka secara paksa dalam waktu yang relatif cepat. DES kemudian diganti oleh Advanced Encryption Standard (AES), menggunakan algoritma Rijndael. AES beroperasi dengan key 128,192, atau 256 bit.

Pada skema kriptografi public key, setiap pemakai mempunyai satu pasang

key : satu private dan satu lagi public. Public key tidak bersifat rahasia – biasanya disediakan kepada semua orang yang ingin mengirim sebuah pesan yang terenkripsi kepada pemilik key. Pengirim menggunakan public key untuk mengenkripsi sebuah pesan dan penerima (pemilik kedua key) kemudian menggunakan private key untuk mendekripsi pesan yang masuk. Hanya private key yang cocok yang bisa membuka pesan yang diamankan dengan public key. (Sumber: Wahana Komputer, 2003)

2.1.2 Teknik Kriptografi

Pada umumnya terdapat dua teknik yang digunakan dalam kriptografi, yakni: kunci simetrik dan kunci asimetrik (public-key).


(23)

Kunci Simetrik

Skema enkripsi akan disebut symmetric-key apabila pasangan kunci untuk proses enkripsi dan dekripsinya sama. Pada skema enkripsi kunci simetrik dibedakan lagi menjadi dua kelas, yaitu block-cipher dan stream-cipher.

Block-cipher adalah skema e3nkripsi yang akan membagi-bagi plaintext yang akan dikirimkan menjadi sting-string (disebut blok) dengan panjang t, dan mengenkripsinya per-blok. Pada umumnya block-cipher memproses plaintext dengan blok yang relatif panjang lebih dari 64 bit dengan tujuan untuk mempersulit penggunaan pola-pola serangan yang ada untuk membongkar kunci. Sedangkan skema stream cipher pada dasarnya juga block-cipher, hanya dengan panjang bloknya adalah satu bit.

Kunci Asimetrik

Skema ini adalah algoritma yang menggunakan kunci yang ber beda untuk proses enkripsi dan dekripsinya. Skema ini disebut juga sebagai sistem kriptografi

Public-key karena kunci untuk enkripsi dibuat secara umum (public-key) atau dapat diketahui oleh siapa saja, tetapi untuk proses dekripsinya yang dibuat satu saja, yakini hanya oleh yang berwenang untuk mendekripsinya (disebut private-key),.

Keuntungan skema model ini, untuk berkorespondensi secara rahasia dengan banyak pihak tidak diperlukan kunci rahasia sebanyak jumlah pihak tersebut, cukup membuat dua buah kunci (disebut public-key) bagi para koresponden untuk mengenkripsi pesan, dan private-key untuk mendekripsi pesan. Berbeda dengan


(24)

skema kunci simetrik yang jumlah kunci yang dibuah adalah harus sebanyak jumlah pihak yang berkorespondensi.(Sumber : Rinaldi Munir, 2007)

2.2 Algoritma Vigenere

Algoritma vigenere cipher merupakan salah satu jenis algoritma kriptografi cipher klasik yang sudah digunakan sejak pecahnya perang sipil Amerika. Giovan Batista Belaso menjelaskan metode ini dalam buku La cifra del. Sig. Giovan Batista Belaso (1553); dan disempurnakan oleh diplomat Perancis Blaise de Vigenère, pada 1586. Pada abat ke-19, banyak orang yang mengira Vigenère adalah penemu sandi ini, sehingga, sandi ini dikenal luas sebagai "sandi Vigenère". Prinsip dasar algoritma ini adalah dengan mengenkripsikan setiap karakter pada plainteks dengan kunci menggunakan tabel vigenere. Pada algoritma ini terjadi pengulangan kunci setelah proses enkripsi sejumlah panjang kunci, sehingga keamanan algoritma ini sangat bergantung sekali pada panjang kunci yang digunakan.

Sandi Vigenère sebenarnya merupakan pengembangan dari sandi Caesar. Pada sandi Caesar, setiap huruf teks terang digantikan dengan huruf lain yang memiliki perbedaan tertentu pada urutan alfabet. Misalnya pada sandi Caesar dengan geseran 3, A menjadi D, B menjadi E and dan seterusnya. Sandi Vigenère terdiri dari beberapa sandi Caesar dengan nilai geseran yang berbeda.

Untuk menyandikan suatu pesan, digunakan sebuah tabel alfabet yang disebut tabel Vigenère (gambar). Tabel Vigenère berisi alfabet yang dituliskan dalam 26


(25)

baris, masing-masing baris digeser satu urutan ke kiri dari baris sebelumnya, membentuk ke-26 kemungkinan sandi Caesar. Setiap huruf disandikan dengan menggunakan baris yang berbeda-beda, sesuai kata kunci yang diulang

Misalnya, teks terang yang hendak disandikan adalah perintah "Serbu Berlin":

serbuberlin

Sedangkan kata kunci antara pengirim dan tujuan adalah "Pizza"

"PIZZA" diulang sehingga jumlah hurufnya sama banyak dengan teks terang:

PIZZAPIZZAP

Huruf pertama pada teks terang, S, disandikan dengan menggunakan baris berjudul P, huruf pertama pada kata kunci. Pada baris P dan kolom S di tabel Vigenère, terdapat huruf H. Demikian pula untuk huruf kedua, digunakan huruf yang terletak pada baris I (huruf kedua kata kunci) dan kolom E (huruf kedua teks terang), yaitu huruf M. Proses ini dijalankan terus sehingga

Teks terang: Serbuberlin Kata kunci: PIZZAPIZZAP Teks bersandi: HMQAUQMQKIC

Proses sebalinya (disebut dekripsi), dilakukan dengan mencari huruf teks bersandi pada baris berjudul huruf dari kata kunci. Misalnya, pada contoh diatas, untuk huruf pertama, kita mencari huruf H (huruf pertama teks tersandi) pada baris P (huruf pertama pada kata kunci), yang terdapat pada kolom S, sehingga huruf


(26)

pertama adalah S. Lalu M terdapat pada baris I di kolom E, sehingga diketahui huruf kedua teks terang adalah E, dan seterusnya hingga didapat perintah "serbuberlin".

Enkripsi (penyandian) dengan sandi Vigenère juga dapat dituliskan secara matematis, dengan menggunakan penjumlahan dan operasi modulus, yaitu:

atau C = P + K - 1 kalau jumlah dibawah 26 & - 27 kalau hasil jumlah diatas 26

dan dekripsi,

atau P = C - K + 1 kalau hasilnya positif & + 27 kalau hasil pengurangan minus

Keterangan: Ci adalah huruf ke-i pada teks tersandi, Pi adalah huruf ke-i pada teks

terang, Ki adalah huruf ke-i pada kata kunci, dan mod adalah operasi modulus

(sisa pembagian).

Berikut dibawah ini merupakan tabel enkripsi dan deskripsi dari vigenere, tabel enkripsi vigenere diperlihatkan pada tabel 2.1 sedangkan tabel diskripsi vigenere terdapat pada tabel 2.2. Tabel tersebut dapat membantu kita dalam mencari atau membuat sebuah chipertext berdasarkan algoritma vigenere.


(27)

Tabel 2.1 Tabel Enkripsi Vigenere(Blaise de Vigenère, 1586)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A

C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B

D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D

F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E

G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F

H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G

I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H

J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I

K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J

L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K

M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L

N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M

O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N

P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O

Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P

R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q

S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R

T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T

V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V

X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W

Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X

Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y

(sumber : http://id.wikipedia.org/wiki/Sandi_Vigenere)

Tabel 2.2 Tabel Deskripsi Vigenere(Blaise de Vigenère, 1586)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z


(28)

B Z A B C D E F G H I J K L M N O P Q R S T U V W X Y

C Y Z A B C D E F G H I J K L M N O P Q R S T U V W X

D X Y Z A B C D E F G H I J K L M N O P Q R S T U V W

E W X Y Z A B C D E F G H I J K L M N O P Q R S T U V

F V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

G U V W X Y Z A B C D E F G H I J K L M N O P Q R S T

H T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

I S T U V W X Y Z A B C D E F G H I J K L M N O P Q R

J R S T U V W X Y Z A B C D E F G H I J K L M N O P Q

K Q R S T U V W X Y Z A B C D E F G H I J K L M N O P

L P Q R S T U V W X Y Z A B C D E F G H I J K L M N O

M O P Q R S T U V W X Y Z A B C D E F G H I J K L M N

N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M

O M N O P Q R S T U V W X Y Z A B C D E F G H I J K L

P L M N O P Q R S T U V W X Y Z A B C D E F G H I J K

Q K L M N O P Q R S T U V W X Y Z A B C D E F G H I J

R J K L M N O P Q R S T U V W X Y Z A B C D E F G H I

S I J K L M N O P Q R S T U V W X Y Z A B C D E F G H

T H I J K L M N O P Q R S T U V W X Y Z A B C D E F G

U G H I J K L M N O P Q R S T U V W X Y Z A B C D E F

V F G H I J K L M N O P Q R S T U V W X Y Z A B C D E

W E F G H I J K L M N O P Q R S T U V W X Y Z A B C D

X D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Y C D E F G H I J K L M N O P Q R S T U V W X Y Z A B

Z B C D E F G H I J K L M N O P Q R S T U V W X Y Z A

(sumber : http://id.wikipedia.org/wiki/Sandi_Vigenere)

2.2.1 Metode Kasiski

Friedrich Kasiski adalah orang yang pertama kali memecahkan

Vigènere cipher pada Tahun 1863. Metode Kasiski membantu menemukan panjang kunci Vigenere cipher. Metode Kasiski memanfaatkan keuntungan bahwa bahasa Inggris tidak hanya mengandung perulangan


(29)

huruf, tetapi juga perulangan pasangan huruf atau tripel huruf, seperti TH, THE, dan sebagainya Perulangan kelompok huruf ini ada kemungkinan menghasilkan kriptogram yang berulang.

Contoh 1:

Plainteks : CRYPTO IS SHORT FOR CRYPTOGRAPHY

Kunci : abcdab cd abcda bcd abcdabcdabcd

Cipherteks : CSASTP KV SIQUT GQU CSASTPIUAQJB

Pada contoh ini, CRYPTO dienkripsi menjadi kriptogram yang sama, yaitu CSATP.

Tetapi kasus seperti ini tidak selalu demikian, misalnya pada contoh berikut ini.

Contoh 2:

Plainteks : CRYPTO IS SHORT FOR CRYPTOGRAPHY

Kunci : abcdef ab cdefa bcd efabcdefabcd

Cipherteks : CSASXT IT UKWST GQU CWYQVRKWAQJB

Pada contoh di atas, CRYPTO tidak dienkripsi menjadi kriptogram yang sama. Mengapa bisa demikian Secara intuitif: jika jarak antara dua buah string yang berulang di dalam plainteks merupakan kelipatan dari panjang kunci, maka string yang sama tersebut akan muncul menjadi kriptogram yang sama pula di dalam cipherteks.

Pada Contoh 1: - kunci = abcd

- panjang kunci = 4


(30)

- 16 = kelipatan 4

CRYPTO dienkripsi menjadi kriptogram yang sama Pada Contoh 2:

- kunci = abcdf - panjang kunci = 6

- jarak antara dua CRYPTO yang berulang = 16 - 16 bukan kelipatan 6

CRYPTO tidak dienkripsi menjadi kriptogram yang sama

Tujuan dari metode Kasiski adalah mencari dua atau lebih kriptogram yang berulang untuk menentukan panjang kunci.

Langkah-langkah metode Kasiski:

1) Temukan semua kriptogram yang berulang di dalam cipherteks (pesan yang panjang biasanya mengandung kriptogram yang berulang).

2) Hitung jarak antara kriptogram yang berulang

3) Hitung semua faktor (pembagi) dari jarak tersebut (faktor pembagi menyatakan panjang kunci yang mungkin ).

4) Tentukan irisan dari himpunan faktor pembagi tersebut. Nilai yang muncul di dalam irisan menyatakan angka yang muncul pada semua faktor pembagi dari jarak-jarak tersebut . Nilai tersebut mungkin adalah panjang kunci. Hal ini karena string yang berulang dapat muncul bertindihan (coincidence)


(31)

Contoh:

DYDUXRMHTVDVNQDQNWDYDUXRMHARTJGWNQD

Kriptogram yang berulang adalah DYUDUXRM dan NQD. Jarak antara dua buah perulangan DYUDUXRM adalah 18. Semua faktor pembagi 18 adalah {18, 9, 6, 3, 2}

Jarak antara dua buah perulangan NQD adalah 20. Semua faktor pembagi 20 adalah {20, 10, 5, 4, 2}. Irisan dari kedua buah himpunan tersebut adalah 2 Panjang kunci kemungkinan besar adalah 2.

Setelah panjang kunci diketahui, maka langkah berikutnya menentukan kata kunci. Kata kunci dapat ditentukan dengan menggunakan exhaustive key search . Jika panjang kunci = p, maka jumlah kunci yang harsu dicoba adalah 26p , Namun lebih ringkas menggunakan teknik analisis frekuensi.

Langkah-langkahnya sbb:

1) Misalkan panjang kunci yang sudah berhasil dideduksi adalah n.

Setiap huruf kelipatan ke-n pasti dienkripsi dengan huruf kunci yang sama. Kelompokkan setiap huruf ke-n bersama-sama sehingga kriptanalis memiliki n buah “pesan”, masing-masing dienkripsi dengan substitusi alfabet-tunggal (dalam hal ini Caesar cipher).

2) Tiap-tiap pesan dari hasil langkah 1 dapat dipecahkan dengan teknik analisis frekuensi.


(32)

3) Dari hasil langkah 3 kriptanalis dapat menyusun huruf-huruf kunci. Atau, kriptanalis dapat menerka kata yang membantu untuk memecahkan cipherteks

Contoh:

LJVBQ STENZ LQMED LJVMA MPKAU FAVAT LJVDA YYVNF

JQLNP LJVHK VTRNF LJVCM LKETA LJVHU YJVSF KRFTT

WEFUX VHZNP

Kriptogram yang berulang adalah LJV. Jarak LJV ke-1 dengan LJV ke-2 = 15 Jarak LJV ke-2 dengan LJV ke-3 = 15 Jarak LJV ke-3 dengan LJV ke-4 = 15 Jarak LJV ke-4 dengan LJV ke-5 = 10 Jarak LJV ke-5 dengan LJV ke-6 = 10 Faktor pembagi 15 = {3, 5, 15}

Faktor pembagi 10 = {2, 5, 10}

Irisan kedua himpunan ini = 5. Jadi, panjang kunci diperkirakan = 5. Kelompokkan “pesan” setiap kelipatan ke-5, dimulai dari huruf cipherteks pertama, kedua, dan seterusnya.


(33)

Tabel 2.3 Tabel Modus Vigenere

NO Chipertext Modus

1 2 3 4 5

LSLLM FLYHL VLLLY KWV JTQJP AJYQJ TJKJJ REH VNMVK VVVLV RVEVV FFZ BEEMA ADNNH NCTHS TUN QZDAU TAFPK FMAUF TXP

L J

V N A

Dalam Bahasa Inggris, 10 huruf yang yang paling sering muncul adalah E, T, A, O, I, N, S, H, R, dan D, Triplet yang paling sering muncul adalah THE. Karena LJV paling sering muncul di dalam cipherteks, maka dari 10 huruf tsb semua kemungkinan kata 3-huruf dibentuk dan kata yang yang cocok untuk LJV adalah THE. Jadi, kita dapat menerka bahwa LJV mungkin adalah THE.

Dari sini kita buat tabel yang memetakan huruf plainteks dengan cipherteks dan huruf-huruf kuncinya (ingatlah bahwa setiap nilai numerik dari huruf kunci menyatakan jumlah pergeseran huruf pada Caesar cipher):


(34)

Tabel 2.4 Tabel Kunci Vigenere

Kelompok Huruf plainteks Huruf cipherteks Huruf kunci

1 2 3 4 5 T H E N O L J V N A S (=18) C (=2) R(=17) A (=0) M(=12)

Jadi, kuncinya adalah SCRAM

Dengan menggunakan kunci SCRAM cipherteks berhasil didekripsi menjadi:

THEBE ARWEN TOVER THEMO UNTAI NYEAH THEDO GWENT ROUND THEHY DRANT THECA TINTO THEHI GHEST SPOTH ECOUL DFIND atau dalam kalimat yang lebih jelas:

THE BEAR WENT OVER THE MOUNTAIN YEAH

THE DOG WENT ROUND THE HYDRANT THE CAT INTO THE HIGHEST SPOT HE COULD FIND.(Charles Babbage, 1854)


(35)

2.3 Deret Fibonacci

Teori Fibonacci adalah alat perdagangan yang populer. Memahami bagaimana alat-alat tersebut digunakan dan untuk kepentingan apa mereka dapat dipercaya adalah penting bagi setiap pedagang yang ingin medapat manfaat dari warisan sejarah ahli ilmu sains matematika. Dimana tidak ada rahasia bahwa beberapa pedagang tanpa bisa bertanya, bergantung pada alat Fibonacci untuk membuat keputusan utama dalam perdagangan, yang lain melihat ilmu Fibonacci sebagai permainan bidang sains yang eksotis, dimainkan oleh beberapa pedagang yang bahkan mungkin mempengaruhi pasar. Dalam artikel ini kita akan mempelajari bagaimana ilmu Fibonacci dapat mempengaruhi situasi pasar dengan memenangkan hati dan pikiran para pedagang.

Waktu itu saat sedang bepergian dengan ayahnya ketika Leonardo Pisano Fibonacci mempelajar sistem Indian kuno yaitu sembilan simbol dan keterampilan matematika lainya yang akhirnya mengantar perkembangan bilangan dan garis Fibonacci.

Satu dari pekerjaan orang Itali, "Libre Abaci" (tahun 1202), berisi beberapa tugas praktek yang berhubungan dengan masalah pembelian, perhitungan harga dan masalah lainnya yang perlu dipecahkan pada kegiatan mereka sehari-hati.

Sebuah percobaan untuk mendapatkan jumlah kemampuan pengembang biakan kelinci-kelinci yang melahirkan sistem bilangan yang sekarang dikenal sebagai bilangan Fibonacci. Seri dimana setiap bilangan adalah jumlah dari dua angka


(36)

yang mendahuluinya Nampak seperti prinsip dibawah jaminan alami dibalik banyak peristiwa dan fenomena yang terjadi di dunia.

Leonardo Fibonacci juga menerapkan teori hidupnya yang memberi inspirasi, dalam konstruksi geometrikal. Hal ini adalah konsep perkawinan yang secara terus menerus digunakan oleh pedagang untuk membantu mereka memasukan uang pada investasi mereka. (untuk melihat lebih jauh, lihat pada Fibonacci dan Rasio Keemasan dan Fibonacci berteknologi tinggi).

(Sumber : http://id.wikipedia.org/wiki/Bilangan_Fibonacci)

2.3.1 Misteri Fibonacci

Pertama mari kita lihat lebih dekat pada apa yang ada pada bilangan Fibonacci. Urutan Fibonacci adalah sebagai berikut:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …

Urutan ini menuju pada sebuah rasio tertentu yang konstan dan yang tidak masuk akal, Ia mewakili bilangan yang tidak berakhir, urutan bilangan desimal yang tidak dapat diperkirakan yang tidak dapat diungkapkan secara tepat. Demi keringkasan, mari mengutipnya pada 1.618. Saat ini, urutan tersebut sering mengacu sebagai bagian keemasan, atau rata-rata keemasan. Dalam ilmu aljabar, hal ini biasa diindikasikan oleh huruf Yunani sebagai Phi (Phi = 1.618). Dalam deret fibonacci, sebuah suku adalah penjumlahan dua suku sebelumnya. Diketahui rasio dari dua buah suku berurutan konvergen ke suatu nilai, anggap nilai itu


(37)

variabel p. Maka pada urutan suku yang sangat besar, misalkan 3 suku berurutan dilambangkan sebagai a,b, dan c, maka berlaku:

c/b = b/a = p; dengan c = a+b

–> (a+b)/b = b/a ;

–> a^2+ab = b^2;

–> a^2+ab-b^2 = 0 ; pers. kuadrat

–> maka didapat a/b= (1+√5)/2 atau a/b= (1-√5)/2

–> jika dihitung, (1+√5)/2 ekivalen dengan 1,618… sedangkan (1-√5)/2 ekivalen dengan 0,618… . Karena a1,618…

Kebiasaan asimptotik dari urutan dan memudarnya fluktuasi pada rasio dan bilangan Phi yang tidak masuk akal akan lebih mudah dimengerti jika hubungan antar beberapa anggota pertama urutan terlihat. Contoh berikut menggambarkan hubungan dari anggota kedua terhadap yang pertama, hubungan anggota ketiga terhadap yang kedua dan seterusnya:

1). 1:1 = 1.0000, yang mana kurang dari phi untuk 0.6180

2). 2:1 = 2.0000, yang mana lebih dari phi untuk 0.3820

3). 3:2 = 1.5000, yang mana kurang dari phi untuk 0.1180


(38)

5). 8:5 = 1.6000, yang mana kurang dari phi 0.0180

Sebagaimana urutan Fibonacci bergerak terus, setiap anggota baru akan membagi yang berikutnya, semakin dekat dan dekat pada phi yang tidak bisa dicapai. Rasio fluktuasi berkisar pada jumlah 1.618 untuk nilai yang lebih rendah atau lebih tinggi yang dapat juga dilihat ketika menggunakan teori Gelombang Elliot. (untuk mempelajari lebih lanjut mengenai gelombang Elliiot, lihatlah pada Teori Gelombang Elliot pada abad ke 21).

Pada banyak kasus, dipercaya bahwa alam bawah sadar manusia mencari rasio keemasan. Sebagai contoh, pedagang tidak secara psikologis nyaman dengan kecenderungan yang panjang. Analisa grafik memiliki banyak kesamaan dengan alam, ketika hal-hal yang berdasarkan pada seksi keemasan adalah indah dan berbentuk dan hal-hal yang tidak berisi terlihat buruk dan seperti mencurigakan atau tidak alami. Hal ini, dalam sebagian kecil membantu menjelaskan mengapa ketika jarak dari bagian keemasan menjadi Nampak panjang, perasaan terhadap kecenderungan yang tidak perlu muncul. Banyak sekali contoh lain dari rasio ini mulai dari jari yang kita gunakan untuk mengetik, hingga luar angkasa sana.

Berikut beberapa fakta yang di temukan mengenai deret Fibonacci.

1). Jumlah Daun pada Bunga (petals)

Mungkin sebagian besar tidak terlalu memperhatikan jumlah daun pada sebuah bunga. Dan bila diamati, ternyata jumlah daun pada bunga itu menganut deret fibonacci. contohnya:


(39)

- jumlah daun bunga 3 : bunga lili, iris

- jumlah daun bunga 5 : buttercup (sejenis bunga mangkok)

- jumlah daun bunga 13 : ragwort, corn marigold, cineraria,

- jumlah daun bunga 21 : aster, black-eyed susan, chicory

- jumlah daun bunga 34 : plantain, pyrethrum

- jumlah daun bunga 55,89 : michaelmas daisies, the asteraceae family

2). Pola Bunga

Pola bunga juga menunjukkan adanya pola fibonacci ini, misalnya pada bunga matahari. Dari titik tengah menuju ke lingkaran yang lebih luar, polanya mengikuti deret fibonacci.

3). Tubuh Manusia

Bila Anda ukur panjang jari Anda, kemudian Anda bandingkan dengan panjang lekuk jari, maka akan ketemu 1.618.

penjelasan :

- Coba bagi tinggi badan Anda dengan jarak pusar ke telapak kaki, maka hasilnya adalah 1.618.

- Bandingkan panjang dari pundak ke ujung jari dengan panjang siku ke ujung jari, maka hasilnya adalah 1.618.


(40)

- Bandingkan panjang dari pinggang ke kaki dengan panjang lutut ke kaki, maka hasilnya adalah 1.618

- Semua perbandingan ukuran tubuh manusia adalah 1.618. benarkah? silahkan membuktikannya.

(Sumber:

http://www.higbank.com/index.php?option=com_content&view=article&id=126 &Itemid=124&lang=id)

2.4. PHP

PHP: Hypertext Preprocessor adalah bahasa skrip yang dapat ditanamkan atau disisipkan ke dalam HTML. PHP banyak dipakai untuk memprogram situs web dinamis, PHP juga dapat digunakan untuk membangun sebuah CMS.

Pada awalnya PHP merupakan kependekan dari Personal Home Page (Situs personal). PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1995. Pada waktu itu PHP masih bernama Form Interpreted (FI), yang wujudnya berupa sekumpulan skrip yang digunakan untuk mengolah data formulir dari web.

Selanjutnya Rasmus merilis kode sumber tersebut untuk umum dan menamakannya PHP/FI. Dengan perilisan kode sumber ini menjadi sumber terbuka, maka banyak programmer yang tertarik untuk ikut mengembangkan PHP.


(41)

Pada November 1997, dirilis PHP/FI 2.0. Pada rilis ini, interpreter PHP sudah diimplementasikan dalam program C. Dalam rilis ini disertakan juga modul-modul ekstensi yang meningkatkan kemampuan PHP/FI secara signifikan.

Pada tahun 1997, sebuah perusahaan bernama Zend menulis ulang interpreter PHP menjadi lebih bersih, lebih baik, dan lebih cepat. Kemudian pada Juni 1998, perusahaan tersebut merilis interpreter baru untuk PHP dan meresmikan rilis tersebut sebagai PHP 3.0 dan singkatan PHP diubah menjadi akronim berulang PHP: Hypertext Preprocessing.

Pada pertengahan tahun 1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal dengan PHP 4.0. PHP 4.0 adalah versi PHP yang paling banyak dipakai pada awal abad ke-21. Versi ini banyak dipakai disebabkan kemampuannya untuk membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan stabilitas yang tinggi.

Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter PHP mengalami perubahan besar. Versi ini juga memasukkan model pemrograman berorientasi objek ke dalam PHP untuk menjawab perkembangan bahasa pemrograman ke arah paradigma berorientasi objek.

Contoh Program :

Program Hello World yang ditulis menggunakan PHP adalah sebagai berikut:

<?php

echo "Hello World"; ?>


(42)

Program bilangan Fibonacci

Berikut ini adalah contoh program yang relatif lebih kompleks yang ditulis dengan menggunakan PHP. Contoh program ini adalah program untuk menampilkan 20 bilangan pertama dari deret bilangan Fibonacci.

<?php

function fibonacci_seq( $panjang ) {

for( $l = array(0,1), $i = 2, $x = 0; $i < $panjang; $i++ ) $l[] = $l[$x++] + $l[$x];

return $l; }

fibonacci_seq(20);

// Angka "20" dapat diganti sesuai keinginan ?>

Kelebihan PHP dari pemrograman lain :

Beberapa kelebihan PHP dari bahasa pemrograman web, antara lain:

1. Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak


(43)

2. Web Server yang mendukung PHP dapat ditemukan dimana - mana dari mulai apache, IIS, Lighttpd, hingga Xitami dengan konfigurasi yang relatif mudah.

3. Dalam sisi pengembangan lebih mudah, karena banyaknya milis - milis dan developer yang siap membantu dalam pengembangan.

4. Dalam sisi pemahamanan, PHP adalah bahasa scripting yang paling mudah karena memiliki referensi yang banyak.

PHP adalah bahasa open source yang dapat digunakan di berbagai mesin (Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara runtime melalui console serta juga dapat menjalankan perintah-perintah system.

Tipe data :

PHP memiliki 8 (delapan) tipe data yaitu : 1. Integer

2. Double

3. Boolean

4. String

5. Object

6. Array

7. Null

8. Nill

9. Resource

(Sumber : http://id.wikipedia.org/wiki/)

2.5 CSS

Sepertinya kita sering mendengar istilah CSS, tapi bagi yang awam tentang dunia web dan Internet seperti kita pasti bingung atau bahkan banyak


(44)

yang tidak memperdulikan hal tersebut. Sebenarnya kalo kita punya profile di Friendster dan kita sering mengubah tampilan profile kita, berarti secara langsung kita udah berhubungan dengan yang namanya CSS, CSS bekerja sebagai pelengkap pada HTML, jadi untuk mengerti CSS paling tidak kita harus sedikit tahu tentang HTML. Cascading Style Sheet adalah suatu teknologi yang digunakan untuk memperindah tampilan halaman website (situs). Singkatnya dengan menggunakan Metode CSS ini anda dengan mudah mengubah secara keseluruhan warna dan tampilan yang ada di situs anda, sekaligus memformat ulang situs anda (merubah secara cepat). CSS juga memungkinkan si pembuat web untuk memodifikasi HTML untuk membentuk tampilan sebuah website. Jadi kalo kita ini adalah arsitek, maka HTML adalah bangunannya dan CSS adalah desain interior dan eksteriornya.Lalu apa sih style sheet (css) itu sebenarnya? apa kegunaan sebenarnya? dan bagaimana cara menggunakannya? (taken from : rumahweb.com)

CSS diperkenalkan untuk pengembangan website pada tahun 1996. Nama CSS didapat dari fakta bahwa setiap deklarasi style yang berbeda dapat diletakkan secara berurutan, yang kemudian akan membentuk hubungan parent-child pada setiap style. Setelah CSS distandarisasikan, Internet Explorer dan Netscape melepas browser terbaru mereka yang telah sesuai atau paling tidak hampir mendekati dengan standar CSS. CSS adalah sebuah dokumen yang berdiri sendiri dan dapat dimasukkan dalam kode HTML atau sekedar mejadi rujukan oleh HTML dalam pendefinisian style. CSS menggunakan kode yang tersusun untuk menetapkan style pda elemen HTML atau dapat juga digunakan membuat style baru yang biasa disebut class. CSS dapat mengubah besar kecilnya text,


(45)

mengganti warna background pada sebuah halaman, atau dapat pula mengubah warna border pada tabel, dan masih banyak lagi hal yang dapat dilakukan oleh CSS. Singkatnya, CSS digunakan untuk mengatur susunan tampilan pada halaman HTML.CSS dapat digunakan untuk menggantikan , , dan , dikarenakan hal berikut: sebuah file css dapat menjadi rujukan banyak halaman HTML. Hanya dibutuhkan 1 baris kode untuk melakukan hal tersebut. Ini berarti akan meminimalkan file2 HTML yang akan dibuat.Jika ingin mengubah tampilan website yang telah dibuat, maka yang perlu dilakukan hanya mengganti baris-baris kode pada css nya saja, tanpa perlu mengutak-atik file-file HTML nya.CSS dapat mengatur banyak atribut pada sebuah halaman secara mudah. Misalnya: warna background, border, shadow, yang berbeda pada masing-masing tag yang digunakan. Satu dari beberapa kehebatan tekhnologi css ini dan merupakan alasan banyak orang menyukai penggunaannya adalah memperbolehkan kita untuk mendefinisikan sebuah style-sheet global yang dapat menerapkan aturan-aturan css tersebut untuk keseluruhan dokumen-dokumen HTML pada halaman web site anda. Keuntungannya jelas sekali, jika kita ingin mengubah tampilan situs, kita tinggal mengedit satu file saja Sekarang, kita akan mencoba melihat bagaimana css itu bekerja. Untuk itu, kita butuh sebuah text editor (notepad, wordpad, Ms word, semua tergantung kesukaan masing2), dan sebuah web browser tentunya.

CSS (Cascading Style Sheets) digunakan dalam kode HTML (Hypertext Markup Language) untuk menciptakan suatu kumpulan Style yang terkadang dapat digunakan untuk memperluas kemampuan HTML (Hypertext Markup Language). CSS (Cascading Style Sheet) adalah bahasa yang digunakan untuk format tampilan HTML (Hypertext Markup Language), bahasa yang


(46)

direkomendasikan W3C (World Wide Web Consortium) untuk melukiskan gaya seperti huruf, warna, ukuran, jarak, posisi pada dokumen-dokumen web. CSS (Cascading Style Sheet) sangat membantu para web designer untuk memperindah halaman web template.

CSS (Cascading Style Sheet) sama fungsinya dengan cara format HTML (Hypertext Markup Language) biasa, namun CSS (Cascading Style Sheet) mempunyai lebih banyak elemen yang bisa kita atur. Contoh :

Tag table punya elemen border, CSS (Cascading Style Sheet) juga punya format untuk border namun lebih detail lagi seperti : border-top, border-right, border-bottom, border-left. artinya lebih kompleks karena memungkinkan kita membuat sisi border yang berbeda.

(Sumber : http://www.nusinau.com/pengertian-css/)

2.6 HTML

HTML (HyperText Mark up Language) merupakan suatu metode untuk mengimplementasikan konsep hypertext dalam suatu naskah atau dokumen. HTML sendiri bukan tergolong pada suatu bahasa pemrograman karena sifatnya yang hanya memberikan tanda (marking up) pada suatu naskah teks dan bukan sebagai program. Berdasarkan kata-kata penyusunnya HTML dapat diartikan lebih dalam lagi menjadi :

Hypertext

Link hypertext adalah kata atau frase yang dapat menunjukkan hubungan suatu naskah dokumen dengan naskah-naskah lainnya. Jika kita klik pada kata atau frase


(47)

untuk mengikuti link ini maka web browser akan memindahkan tampilan pada bagian lain dari naskah atau dokumen yang kita tuju.

Markup

Pada pengertiannya di sini markup menunjukkan bahwa pada file HTML berisi suatu intruksi tertentu yang dapat memberikan suatu format pada dokumen yang akan ditampilkan pada World Wide Web.

Language

Meski HTML sendiri bukan merupakan bahasa pemrograman, HTML merupakan kumpulan dari beberapa instruksi yang dapat digunakan untuk mengubah-ubah format suatu naskah atau dokumen

Kumpulan Tag HTML

1) (!-- --) Memberi komentar atau keterangan. Kalimat yang terletak pada tag kontiner ini tidak akan terlihat pada browser

2) (a href) Membuat link ke halaman lain atau ke bagian lain dari halaman tersebut

3) (a name) Membuat nama bagian yang didefinisikan pada link pada halaman yang sama

4) (applet) Sebagai awal dari Java applets

5) (area) Mendefinisikan daerah yang dapat diklik (link) pada image map 6) (b) Membuat teks tebal

7) (basefont) Membuat atribut teks default seperti jenis, ukuran dan warna font

8) (bgsound) Memberi (suara latar) background sound pada halaman web 9) (big) Memperbesar ukuran teks sebesar satu point dari defaultnya


(48)

10)(blink) Membuat teks berkedip

11)(body) Tag awal untuk melakukan berbagai pengaturan terhadap text, warna link & visited link

12)(br) Pindah baris

13)(caption) Membuat caption pada tabel

14)(center) Untuk perataan tengah terhadap teks atau gambar

15)(comment) Meletakkan komentar pada halaman web tidak tidak akan nampak pada browser

16)(dd) Indents teks

17)(div) Represents different sections of text.

18)(embed) Menambahkan sound or file avi ke halaman web 19)(fn) Seperti tag (a name)

20)(font) Mengganti jenis, ukuran, warna huruf yang akan digunakan utk teks

21)(form) Mendefinisikan input form 22)(frame) Mendefinisikan frame

23)(frameset) Mendefinisikan attribut halaman yang akan menggunakan frame

24)(h1 ... h6) Ukuran font

25)(head) Mendefinisikan head document. 26)(hr) Membuat garis horizontal

27)(html) Bararti dokumen html 28)(i) Membuat teks miring


(49)

30)(input) Mendefinisikan input field pada form

31)(li) Membuat bullet point atau baris baru pada list (berpasangan dengan tag (dir), (menu) (ol) and (ul)

32)(map) Mendefinisikan client-side map

33)(marquee) Membuat scrolling teks (teks berjalan) - hanya pada MS IE 34)(nobr) Mencegah ganti baris pada teks atau images

35)(noframes) Jika browser user tidak mendukung frame 36)(ol) Mendefinisikan awal dan akhir list

37)(p) Ganti paragraf

38)(pre) Membuat teks dengan ukuran huruf yg sama 39)(script) Mendefinisikan awal script

40)table) Membuat tabel 41)(td) Kolom pada tabel 42)(title) Mendefinisikan title 43)(tr) Baris pada tabel

44)(u) Membuat teks bergaris bawah

(sumber: http://www.scribd.com/doc/47294509/Kumpulan-Tag-HTML)

2.7 Javascript

JavaScript adalah bahasa pemrograman berbasis prototipe yang berjalan disisi klien. Jika kita berbicara dalam konteks web, sederhananya, kita dapat memahami JavaScript sebagai bahasa pemrograman yang berjalan khusus untuk di browser atau halaman web agar halaman web menjadi lebih hidup. Kalau dilihat dari suku katanya terdiri dari dua suku kata, yaitu Java dan Script. Java


(50)

adalah Bahasa pemrograman berorientasi objek, sedangkan Script adalah serangkaian instruksi program.

Secara fungsional, JavaScript digunakan untuk menyediakan akses script pada objek yang dibenamkan ( embedded ). Contoh sederhana dari penggunaan JavaScript adalah membuka halaman pop up, fungsi validasi pada form sebelum data dikirimkan ke server, merubah image kursor ketika melewati objek tertentu, dan lain lain.

Yang harus diperhatikan dalam pengelolaan pemrograman JavaScript, diantaranya JavaScript adalah “case sensitive”, yang artinya JavaScript membedakan huruf besar dan huruf kecil. Jika Anda pernah belajar bahasa pemrograman seperti Turbo C atau C++, maka sama seperti bahasa pemrograman tersebut, dimana huruf T tidak sama dengan huruf t.

Dalam bahasa pemrograman JavaScript juga, sebagai contoh fungsi perintah var tidak boleh ditulis Var dan juga tidak boleh ditulis VAR (huruf besar semua), yang benar adalah var (huruf kecil semua). Perintah lain adalah new Date tidak boleh ditulis new date (huruf kecil semua),dan sebagainya.

2.7.1 Sejarah

Javascript pertama kali dikembangkan oleh Brendan Eich dari Netscape dibawah nama Mocha, yang nantinya namanya diganti menjadi LiveScript, dan akhirnya menjadi Javascript.

Navigator sebelumnya telah mendukung Java untuk lebih bisa dimanfaatkan para programmer yang non-Java. Maka dikembangkanlah bahasa pemrograman bernama LiveScript untuk mengakomodasi hal tersebut. Bahasa


(51)

pemrograman inilah yang akhirnya berkembang dan diberi nama Javascript, walaupun tidak ada hubungan bahasa antara Java dengan Javascript.

Javascript bisa digunakan untuk banyak tujuan, misalnya untuk membuat efek rollover baik di gambar maupun teks, dan yang penting juga adalah untuk membuat AJAX. Javascript adalah bahasa yang digunakan untuk AJAX.

2.7.2 Penulisan Javascript

Kode Javascript biasanya dituliskan dalam bentuk fungsi yang ditaruh di tag <head> yang dibuka dengan tag

<script type="teks/Javascript">. <script type="teks/Javascript">

alert("Halo Dunia!"); <script>

Kode Javascript juga bisa diletakkan di file tersendiri yang berekstensi. js (singkatan dari Javascript). Untuk memanggil kode Javascript yang terdapat di file sendiri, di bagian awal <head> harus ditentukan dahulu nama file .js yang dimaksud menggunakan contoh kode seperti berikut:

<script type="teks/Javascript" src="alamat.js"> </script>.

2.8 Jquery

JQuery merupakan suatu framework (library) Javascript yang menekankan bagaimana interaksi antara Javascript dan HTML. JQuery pertama kali dirilis pada tahun 2006 oleh John Resig. Pada perkembangannya JQuery tidak sekedar


(52)

sebagai framework Javascript, namun memiliki kehandalan dan kelebihan yang cukup banyak. Hal tersebut menyebabkan banyak developer web menggunakannya. JQuery memiliki slogan “Write less, do more” yang kurang lebih maksudnya adalah kesederhanaan dalam penulisan code, tapi dengan hasil yang lebih banyak.

jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.

JQuery merupakan library open source dengan lisensi GNU General Public License dan MIT License. Dari sisi ukurannya, framework JQuery sungguh ramping, hanya sekitar 20 KB dan hanya terdiri dari satu file. Namun demikian, bagi yang menginginkan fungsi lebih, JQuery memungkinkan penambahan fungsionalitas dalam bentuk plugin. Saat ini tersedia ribuan plugin yang dapat diperoleh secara gratis di internet.

Apa yang bisa dilakukan dengan JQuery?

1) Mengakses bagian halaman tertentu dengan mudah :

Tanpa adanya library Javascript khusus, untuk mengakses suatu bagian tertentu dari halaman, harus mengikuti aturan Document Object Model (DOM) dan pengaksesan harus secara spesifik menyesuaikan dengan struktur HTML. Dengan kata lain, pengaksesan bagian tertentu dari halaman sangat tergantung pada struktur dari HTML. JQuery menawarkan cara yang mudah (bahkan sangat mudah) dalam mengakses


(53)

bagian tertentu dari halaman. Pengaksesan juga tidak terlalu bergantung pada struktur HTML.

2) Mengubah tampilan bagian halaman tertentu:

CSS (Cascading Style Sheet) menawarkan metode yang cukup handal dalam mengatur dan mempercantik halaman web. Namun terkadang CSS punya kelemahan yang cukup mengganggu, yaitu beberapa perintah CSS tidak didukung oleh semua browser. Cukup merepotkan jika kita harus mendesign halaman web dengan beberapa CSS sekaligus. Sekali lagi JQuery menawarkan solusi untuk mengatasi hal tersebut. Dengan JQuery, “kesenjangan” yang terjadi antara browser dalam urusan CSS akan tertutup dengan baik.

3) Mengubah isi dari halaman :

Jaman dulu (sebelum JQuery lahir) cukup sulit jika kita akan mengubah sebagian isi dari halaman. Mengubah disini dapat berarti mengganti teks, menambahkan teks atau gambar, mengurutkan suatu daftar (list), menghapus baris tabel dan sebagainya. Dengan JQuery, hal tersebut dapat dilakukan dengan hanya beberapa baris perintah.

4) Merespond interaksi user dalam halaman :

Website yang baik tidak cukup digambarkan dengan user-interface dan tampilan yang memukau. Namun lebih dari itu, bagaimana pengunjung dapat berinteraksi dengan website dan dapat mengatur


(54)

tampilannya sendiri. Interaktivitas sangat bergantung bagaimana pemrograman yang dipakai dalam menangani event-handling. Javascript sendiri memiliki beberapa event-handling seperti onclick untuk menangani event saat terjadi click. Namun demikian, event handling pada Javascript terbatas pada object-object tertentu, dan jenisnya pun terbatas. JQuery melengkapi semuanya dengan tambahan penanganan event-handling yang semakin mudah.

5) Menambahkan animasi ke halaman :

Animasi seringkali disertakan dalam suatu halaman web untuk menambah kecantikannya. Saat ini animasi masih cukup digemari oleh para peselancar situs. Animasi dapat dibuat dalam berbagai gaya, ada yang menggunakan Flash, gambar bergerak (GIF), video, dan sebagainya. Masing-masing tentu memiliki kelebihan dan kekurangan masing-masing. JQuery sendiri menawarkan konsep animasi (walaupun masih sederhana) yang cukup apik namun ramah bandwidth alias ringan. Salah satu animasi yang bisa dibuat dengan JQuery adalah fading jika terdapat suatu bagian dari halaman ditambahkan atau dihilangkan.

6) Mengambil informasi dari server tanpa me-refresh seluruh halaman : Mengambil informasi dari server tanpa refresh halaman merupakan salah satu konsep dasar dari yang namanya AJAX (Asynchronous Javascript and XML). Pada penerapannya, cukup ribet jika harus


(55)

membangun website dengan konsep AJAX, saat ini banyak library khusus yang berusaha mempermudahnya. JQuery merupakan salah satunya.

7) Menyederhanakan penulisan Javascript biasa.

Semboyan JQuery adalah “Write less, do more” atau dengan kata lain kesederhanaan dalam penulisan code, tetapi menghasilnya tampilan yang lebih. Sebenarnya inilah yang menjadi daya tarik tersendiri buat para pengembang web untuk menggunakan JQuery.

(sumber:

http://www.satriamultimedia.com/artikel_belajar_dan_mengenal_jquery.html)

2.9 Xampp

Xampp adalah perangkat lunak bebas, yang mendukung banyak sistem operasi, merupakan kompilasi dari beberapa program. Fungsinya adalah sebagai server yang berdiri sendiri (localhost), yang terdiri atas program Apache HTTP Server, MySQL database, dan penerjemah bahasa yang ditulis dengan bahasa pemrograman PHP dan Perl. Nama XAMPP merupakan singkatan dari X (empat sistem operasi apapun), Apache, MySQL, PHP dan Perl. Program ini tersedia dalam GNU General Public License dan bebas, merupakan web server yang mudah digunakan yang dapat melayani tampilan halaman web yang dinamis. Untuk mendapatkanya dapat mendownloadlangsung dari web resminya.

XAMPP adalah singkatan yang masing-masing hurufnya adalah: X


(56)

X: Program ini dapat dijalankan dibanyak sistem operasi seperti Windows, Linux, Mac OS, dan Solaris.

A

A: Apache, merupakan aplikasi web server. Tugas utama Apache adalah menghasilkan halaman web yang benar kepada user berdasarkan kode PHP yang dituliskan oleh pembuat halaman web. jika diperlukan juga berdasarkan kode PHP yang dituliskan,maka dapat saja suatu database diakses terlebih dahulu (misalnya dalam MySQL) untuk mendukung halaman web yang dihasilkan.

M

M: MySQL, merupakan aplikasi database server. Perkembangannya disebut SQL yang merupakan kepanjangan dari Structured Query Language. SQL merupakan bahasa terstruktur yang digunakan untuk mengolah database. MySQL dapat digunakan untuk membuat dan mengelola database beserta isinya. Kita dapat memanfaatkan MySQL untuk menambahkan, mengubah, dan menghapus data yang berada dalam database.

P

P: PHP, bahasa pemrograman web. Bahasa pemrograman PHP merupakan bahasa pemrograman untuk membuat web yang bersifat server-side scripting. PHP memungkinkan kita untuk membuat halaman web yang bersifat dinamis. Sistem manajemen basis data yang sering digunakan bersama PHP adalah MySQl. namun PHP juga mendukung sistem manajement database Oracle, Microsoft Access, Interbase, d-base, PostgreSQL, dan sebagainya.


(57)

1) htdoc adalah folder tempat meletakkan berkas-berkas yang akan dijalankan, seperti berkas PHP, HTML dan skrip lain.

2) phpMyAdmin merupakan bagian untuk mengelola basis data MySQL yang ada dikomputer. Untuk membukanya, buka browser lalu ketikkan alamat http://localhost/phpMyAdmin, maka akan muncul halaman phpMyAdmin.

3) Kontrol Panel yang berfungsi untuk mengelola layanan (service) XAMPP. Seperti menghentikan (stop) layanan, ataupun memulai (start).


(58)

Pada bab sebelumnya telah dibahas tinjauan pustaka yang diperlukan untuk Tugas Akhir ini. Selanjutnya akan dibahas mengenai Analisa dan Perancangan sistem Aplikasi Chipertext Generator Menggunakan Algoritma

Vigenere Berbasis Modifikasi Fibonacci Dapat disimpulkan bahwa Analisa dan

Perancangan sistem adalah suatu proses memahami sistem kemudian merancang sistem tersebut yang bertujuan agar dapat menjalankan aplikasi sesuai yang di inginkan.

3.1 Analisis Sistem

Aplikasi yang dibuat pada skripsi ini yaitu merupakan sebuah aplikasi pengubah plaintext menjadi chipertext, chipertext yang dihasilkan merupakan hasil dari enkripsi algoritma vigenere yang sudah dimodifkasi menggunakan deretan fibonacci. Algoritma ini bekerja dengan menggunkan kunci (key) seperti kata, nomor maupun frase tertentu. Jika dilakukan enkripsi pada plaintext yang sama dengan menggunakan kunci yang berbeda, maka akan menjadi chipertext yang berbeda pula.

vigenere cipher adalah algoritma substitusi jamak dimana suatu huruf plainteks tidak selalu disubstitusi menjadi huruf yang sama, namun disubstitusi berdasarkan kunci yang digunakan. Disini algoritma vigenere memiliki kelemahan yaitu jika panjang kunci lebih pendek dari panjang plainteksnya sehingga terdapat perulangan kunci yang digunakan untuk mengenkripsi plainteks


(59)

tersebut. Jadi untuk menutupi kelemahan tersebut dilakukan modifikasi pada algoritma tersebut jadi pada sistemnya algoritma vigenere akan dimodifikasi dengan deretan Fibonacci. Jadi ketika ada deretan kata yang sama dalam chipertext maka deretan tersebut akan dimodifikasi dengan deretan Fibonacci sehingga akan sulit untuk di analis frekuensi karena deretan yang sama sudah digantikan dengan deretan yang baru.

3.2 Perancangan Sistem

Pada proses perancangan sistem digunakan untuk menggambarkan sejumlah proses terstruktur dalam sistem, berorientasikan pada aliran proses yang terjadi, agar memperjelas proses alur sistem yang dibuat.

Berikut ini merupakan alur sistem dari model konseptual perancangan asli dari sebuah proses enkripsi :

Gambar 3.1 Gambar Alur Enkripsi Standart Start

File text yang belum di enkripsi(plaintext)

Proses Enkripsi

File text yang sudah di

enkripsi(Chipertext)


(60)

Penjelasan dari Gambar 3.1 adalah :

1) Sebuah file yang text yang belum di enkripsi yaitu plaintext .

2) File text yang masih berupa plaintext melewati sebuah proses dimana pada proses tersebut terjadi pengubahan antara text biasa menjadi text yang akan di enkripsi.

3) Kemudian file berubah dari plaintext menjadi chipertext setelah melalui proses enkripsi.

Gambar diatas merupakan sebuah Flowchart normal dari sebuah proses enkripsi dimana sebuah plaintext melalui proses enkripsi dan menjadi sebuah chipertext. Pada dasarnya sebuah alur pembuatan enkripsi pasti sama tetapi jikapun ada perubahan atau modifikasi hanya pada saat terjadi di proses enkripsinya saja. Berikut ini merupakan contoh terjadinya modifikasi pada sebuah enkripsi:

Gambar 3.2 Gambar Alur Enkripsi Dengan Modifikasi Start

File text yang belum di enkripsi(plaintext)

Proses Enkripsi Dengan menggunakan

fibonacci

File text yang sudah di enkripsi(Chipertext)


(61)

Pada gambar 3.2 dapat kita lihat alur dari plaintext menjadi chipertext masih sama tetapi hanya terjadi perubahan pada isi proses enkripsinya dimana pada proses enkripsinya sudah ada perubahan dimana yang sebelumnya hanya enkripsi vigenere tetapi pada gambar 3.2 sudah ada penambahan modifikasi Fibonacci.

3.3 Perancangan Proses

Pada bagian ini akan dijelaskan bagaimana proses pembuatan sebuah aplikasi chipertext generator menggunakan algoritma vigenere berbasis modifikasi Fibonacci.

3.3.1 Proses Modifikasi Fibonacci

Sebenarnya penggunaan deret Fibonacci pada sebuah aplikasi enkripsi akan mudah diketahui karena deret Fibonacci merupakan sebuah deretan yang tidak asing bagi tiap orang. Oleh sebab itu kita lakukan modifikasi pada rumusan deret Fibonacci, berikut ini merupakan rumus untuk mencari deretan ke-n dari sebuah deret Fibonacci :

Fn = F ( n – 1 ) + F ( n – 2 )

Namun jika algoritma vigenere dimodifikasi dengan rumus fibonacci yang demikian saja maka akan mudah untuk dikenali, karena orang pasti bisa menebak modifikasi apa yang digunakan pada algoritma vigenere tersebut. Sehingga plaintext yang seharusnya sulit untuk diketahui setelah berupa chipertext maka akan diketahui oleh pihak yang seharusnya tidak mengetahui apa isi plaintext


(62)

tersebut, oleh sebab itu kita lakukan modifikasi pada rumus Fibonacci tersebut menjadi :

Fn = F ( n – k ) + F ( n – k+m )

Keterangan:

n = merupakan deret kunci ke – n k = panjang dari kata kunci

m= 1 + ( ∑ ( kunci input ) mod ( k – 1 ) )

m merupakan variable penambahan dalam penambahan kunci yang bersifat dinamis karena akan menyesuaikan dengan panjang kunci yang dimasukan. Kunci yang dimasukan minimal terbentuk dari 2 karakter. Dengan menggunakan variable m ini maka rumus tersebut akan menjadi lebih dinamis dikarenakan urutan yang dijumlahkan tidak akan selalu sama. Namun menyesuaikan dengan jumlah karakter kata kunci yang dimasukkan.

Dengan melakukan modifikasi tersebut maka ciri dari sandi Fibonacci tidak akan begtu terlihat , berikut ini merupakan contoh dengan menggunakan metode Fibonacci yang sudah dimodifikasi:

Contoh : Kunci Input : “kamu” k / panjang kata kunci = 4

m / variable penambah kunci = 1 + ((11+1+13+21) mod (4-1)) = 2 Menjadi : F5 = (5-4) + (5-4+2)

= (1) + (3) = 4 ( D ) F6 = (6-4) + (6-4+2) = (2) + (4) = 6 ( F ) F7 = (7-4) + (7-4+2)


(63)

= (3) + (5) = 8 ( H ) F8 = (8-4) + (8-4+2) = (4) + (6) = 10 ( J )

Jadi kata yang didapat untuk menjadi tambahan kunci adalah DFHJ.

Berikut ini contoh jika kata tersebut digabungkan dan dienkripsi dengan sebuah plaintext maka akan menjadi :

Plaintext : AZER AMAN Kata Kunci : kamu DFHJ Chippertext : KZQL DRHW

Dapat kita lihat dari proses diatas maka penggunaan deret Fibonacci pada sebuah algoritma vigenere untuk pengenkripsian sebuah text tidaklah begitu nampak, disini deretan tersebut seperti terlihat acak dan tidak mencerminkan deret Fibonacci.

Berikut ini merupakan algoritma untuk mengetahui bagaimana kondisi yang diperlukan untuk dapat menggunakan rumus tersebut :

1) Pertama kita lakukan pengecekan terhadap panjang plaintext yang ada dengan panjang kata kunci.

2) Kedua jika panjang plaintext < panjang kunci maka panjang kunci disamakan dengan panjang plaintextnya, lalu jumlahkan keduanya.

3) Ketiga jika panjang kunci < panjang plaintextnya maka baru kita gunakan rumus tersebut.

4) Langkah ke-empat kita hitung dulu berapa panjang kata kunci sehingga deret keberapa dari kata kunci tersebut yang akan mulai kita cari dengan rumus tersebut.


(64)

5) Langkah kelima hitung juga berapa panjang plaintextnya untuk menentukan perulangan yang diperlukan agar panjang kata kunci sama dengan panjang plaintextnya.

6) Langkah ke-enam setelah melakukan 5 langkah sebelumnya baru kita dapat mencari variable m dengan rumus berikut ini :

m= 1 + ( ∑ ( kunci input ) mod ( k – 1 ) ).

7) Langkah ketujuh adalah dengan mencari karakter kunci setelah panjang kunci yang di masukkan misalnya panjang kunci input adalah 4 berarti kita mencari panjang kunci input ke 5 atau jika dirumuskan k + 1.

8) Langkah ke delapan ialah setelah kita mengetahui deret berapa yang kita cari misalnya deretan kunci ke 5 baru kita memasukkan rumus :

F n = F ( n – k ) + F ( n – k+m )

9) Langkah terakhir adalah setelah panjang kata kunci input sama dengan panjang plaintext baru kita lakukan penjumlahan antara kunci input setelah dimodifikasi dengan panjang plaintext.

3.3.2 Proses Alur Program

Pada bagian ini akan menjelaskan bagaimana menerapkan konsep yang ada pada sebuah program, untuk pertama kita buat sebuah Alur atau flowchart dari konsep yang sudah ada menjadi program. Berikut ini merupakan flowchart untuk membuat program :


(65)

(66)

(67)

Dapat kita lihat pada gambar 3.3 alur program dari pembuatan aplikasi chipetext generator menggunakan algoritma vigenere berbasis modifikasi Fibonacci, pada gambar tersebut hal yang pertama kita butuhkan adalah fungsi untik pembacaan kode ASCII hal tersebut berfungsi sebagai penyaring apa saja yang bisa dibaca atau dikenali oleh sistem. Kemudian kita membutuhkan indeks atau perbendaharaan kata, agar kita mengetahui nilai dari kata yang kita inputkan baru setelah itu kita dapat melakukan perhitungan dengan menggunakan rumus yang sudah dibuat.

3.4 Desain Antar Muka

Hal yang paling penting yang dapat dilakukan dan perlu perencanaan lebih lanjut lainnya adalah memastikan antarmuka pengguna dapat bekerja untuk mendukung fungsionalitas aplikasi. Keberhasilan sebuah program ditentukan dari pengguna itu sendiri. Dalam hal ini pengguna harus paham akan aplikasi yang digunakan. Hal tersebut hanya terwujud jika antarmuka aplikasi tidak membingungkan bagi pengguna.

Kesederhanaan adalah penting dalam desain antarmuka pengguna, sebab semakin banyak kontrol yang ada pada tampilan awal sebuah program maka semakin banyak waktu yang diperlukan pengguna untuk mencari tahu bagaimana menggunakan antarmuka sebuah aplikasi tersebut. Oleh sebab itu ketika terdapat sedikit pilihan, fungsi-fungsi yang tersedia menjadi lebih jelas dan lebih mudah untuk dipahami. Menyederhanakan antarmuka tidaklah mudah, terutama jika tidak ingin membatasi fungsi aplikasi tersebut.


(68)

3.4.1 Desain Menu

Menu merupakan hal yang sangat penting dalam merancang sebuah aplikasi. Untuk membuat sebuah aplikasi yang baik maka diperlukan juga sebuah perancangan menu yang baik pula. Pada pembuatan aplikasi ini telah dirancang suatu perancangan menu yang untuk gambarnya dapat di lihat dibawah ini :

Gambar 3.4 Gambar Alur Desain Menu Program

Dari perancangan menu diatas, dapat dijelaskan seperti dibawah ini :

Home

Encryption Decryption

Ketik Plaintext

Input File *.txt

Input Kunci

Enkrip

Hasil Enkrip

Simpan Hasil

Ketik Chipertext

Input File *.txt

Input Kunci

Decrypt

Hasil Decrypt


(69)

A). Proses pemilihan menu, pada tampilan awal pemilihan menu akan terdapat beberapa menu utama yang dapat di akses. Ketiga pilihan menu tersebut adalah:

1) Home

2) Encryption

3) Decryption

B). Home merupakan tampilan awal muka, pada menu home tidak ada fitur-fitur khusus, hanya fitur untuk menuju ke fitur Encryption dan fitur Decryption. Sebenarnya home berguna untuk kembali ke tampilan awal atau sekedar perkenalan terhadap aplikasi Chipertext generator menggunakan algoritma Vigenere berbasis modifikasi Fibonacci.

C). Encryption merupakan sebuah menu yang memiliki fitur untuk mengenkripsi sebuah plaintext menjadi chipertext. Jika kita membuka menu ini maka akan muncul pilihan menu penginputan, menu encrypt manual dan encrypt auto. Dimana kedua menu tersebut akan menentukan bagaiman proses pemasukan file kita nantinya. Keseluruhan fitur yang ada pada menu encrypt adalah :

1) Browse dimana menu tersebut digunakan untuk memilih text yang sudah jadi atau berupa data yang sudah terimpan berupa file berekstensi *.txt.

2) Kata kunci kita dapat inputkan secara menual agar kita dapat menentukan kata apa yang akan kita gunakan sebagai kata kunci.


(70)

3) Teks input merupakan tempat untuk meletakan kata-kata berupa plaintext kita dapat menginputkan secara manual atau melalui menu browse maka akan muncul isi dari file yang dipilih berupa text.

4) Teks Output merupakan sebuah textbox yang akan memunculkan

text yang sudah di enkripsi, text tersebut akan tampil jika kita sudah mengisi teks input dan menekan tombol encrypt.

5) Simpan encrypt merupakan fitur untuk menyimpan hasil encrypt, yang berada pada text output.

D). Decryption merupakan sebuah menu yang memiliki fitur yang hampir sama dengan fitur Encryption perbedaannya jika fitur decryption berfungsi untuk mengubah kembali dari chipertext menjadi plaintext. Jika kita membuka menu ini maka akan muncul sebuah menu yang sama seperti menu-menu yang ada pada menu encryption yaitu :

1) Browse menu tersebut digunakan untuk memilih text yang sudah jadi atau berupa data yang sudah terimpan berupa file berekstensi *.txt ,

2) Kata kunci kita dapat inputkan secara menual agar kita dapat menentukan kata apa yang akan kita gunakan sebagai kata kunci. 3) Teks input merupakan tempat untuk meletakan kata-kata berupa

text yang kita dapat menginputkan secara manual atau melalui menu browse yang nantinya jika kita pilih melalui menu browse maka akan muncul isi dari file yang dipilih kedalam teks input berupa text.


(71)

4) Teks Output merupakan sebuah textbox yang akan memunculkan text yang sudah di enkripsi, text tersebut akan tampil jika kita sudah mengisi teks input dan menekan tombol decrypt.

3.4.2 Desain Tampilan Muka Aplikasi

Pada bagian ini akan membahas bagaimana penerapan konsep yang kita kumpulkan dan kita buat menjadi sebuah bentuk aplikasi.


(1)

90

4.5 Hasil Uji Coba Program

Setelah melakukan serangkaian uji coba maka dapat dapat diperoleh kesimpulan bahwa dengan memodifikasi algoritma vigenere dengan Fibonacci maka dapat mengilangkan pengulangan kata yang ada pada chipertext sehingga chipertext tersebut sulit untuk dianalisis frekuensi. Berikut ini contoh uji coba yang mendasari hal tersebut :

4.5.1 Hasil Uji Coba Panjang Kunci

Kenapa dilakukan uji coba ini, karena untuk diketahui pembuktiannya apakah jika panjang kata kunci ganjil dan genap akankah mempengaruhi hasil perulangan pada chipertext yang dihasilkan. Pada algoritma vigenere yang biasa jika kata inputan bertemu dengan kata kunci ganjil maka chipertext yang dihasilkan kemungkinannya tidak akan terjadi perulangan sebaliknya jika kata kunci genap maka akan menghasilkan chipertext yang berulang. contohnya kita inputkan Plainteks “CRYPTO IS SHORT FOR CRYPTOGRAPHY” Kemudian kita inputkan kata kunci ganjil “abcde”, maka akan terjadi perulangan kunci dan akan menghasilkan chipertext seperti ini:

Plainteks : CRYPTO IS SHORT FOR CRYPTOGRAPHY

Kunci : abcdea bc deabc dea bcdeabcdeabc


(2)

Kemudian dengan plaintext yang sama kita inputkan kata kunci, tetapi kata kunci yang diinputkan memiliki jumlah genap yaitu “abcd” dan dengan perulangan kuncinya maka akan menghasilkan chipertext seperti berikut ini :

Plainteks : CRYPTO IS SHORT FOR CRYPTOGRAPHY

Kunci : abcdab cd abcda bcd abcdabcdabcd

Cipherteks : CSASTP KV SIQUT GQU CSASTPIUAQJB

Dari dua percobaan kata yang diinputkan pada kata kunci ganjil tidak terjadi pengulangan sedangkan pada kata kunci genap terjadi perulangan chipertext yaitu CSASTP.

Tetapi jika menggunakan aplikasi chipertext generator menggunakan algoritma vigenere berbasis modifikasi Fibonacci maka tidak akan menghasilkan chipertext yang sama berikut ini pembuktiannya pada gambar 4.26

Gambar 4.26 Hasil Uji Coba

Hak Cipta © milik UPN "Veteran" Jatim :


(3)

92

Setelah kita mengenkripsi sebuah kata “CRYPTO IS SHORT FOR CRYPTOGRAPHY” dengan menggunakan kata kunci “abcd” tidak nampak sebuah pengulangan, padahal seharusnya terjadi pengulangan pada plaintext CRYPTO IS SHORT FOR CRYPTOGRAPHY karena menurut rumus jika panjang kata kunci merupakan kelipatan dari kata yang sama pada plaintext maka mungkin akan terjadi pengulangan chipertext . Jika dirumuskan akan menjadi seperti berikut :

• Kunci = abcd

• Panjang Kunci = 4

• Jarak Antara CRYPTO Yang Berulang = 16

• 16 = Merupakan kelipatan 4

• Maka CRYPTO akan dienkripsi menjadi kata yang sama

Tetapi karena menggunakan metode vigenere yang sudah dimodifikasi maka tidak nampak pengulangan chipertext. Jadi dengan demikian maka aplikasi ini dapat menghilangkan pengulangan chipertext yang menjadi kelemahan pada sandi vigenere hal tersebut dapat dibuktikan pada Gambar 4.26.


(4)

93

BAB V

PENUTUP

5.1 Kesimpulan

Berdasarkan dari hasil analisa dan ujicoba yang dilakukan, maka dapat ditarik kesimpulan :

1) Pengulangan chipertext terjadi karena adanya pengulangan kata kunci

yang dihasilkan, sehingga diperlukan suatu cara untuk meminimalisir

pengulangan chipertext dengan mengganti kata kunci yang berulang

2) Rumus fibonacci diletakkan pada saat terjadi pengulangan kata kuncinya,

misalnya inputan kata kunci ”abcd” dengan plainteks ” CRYPTO IS SHORT FOR CRYPTOGRAPHY” maka akan menjadi :

Plainteks : CRYPTO IS SHORT FOR CRYPTOGRAPHY

Kunci : abcdab cd abcda bcd abcdabcdabcd

Pada kunci terlihat terjadi perulangan, pada bagian perulangan kunci tersebut kita ganti menjadi kata kunci yang tidak seperti inputan kunci.

3) Rumus fibonacci dapat dijadikan lebih dinamis dengan cara memodifikasi

konstanta yang ada pada rumus fibonacci :

Fn = F ( n – 1 ) + F ( n – 2 )

menjadi variabel sehingga akan menghasilkan deretan yang lebih dinamis yaitu :

Fn = F ( n – k ) + F ( n – k+m )

Hak Cipta © milik UPN "Veteran" Jatim :


(5)

94

4) Cukup dengan memodifikasi perulangan kata kunci dengan rumus

fibonacci yang sudah dimodifikasi maka meskipun kata kunci itu ganjil

atau genap maka tidak akan menghasilkan chipertext yang sama

5) Setelah mengganti kata kunci yang berulang dengan kata kunci dari hasil

generate fibonacci yang sudah dimodifikasi, maka chipertext yang dihasilkan tidak akan terjadi perulangan.

5.2 Saran

Pada penelitian yang dilakukan masih banyak kekurangannya antara lain kata kunci yang diinputkan masih ada dalam pengulangannya sehingga masih

mungkin untuk ditebak oleh cryptanalis, sebaiknya kata kunci tidak ada dalam

pengulangan sehingga akan lebih sulit untuk ditebak. Pada enkripsi ini file yang dibaca hanya bertipe text akan lebih fungsional jika file yang bisa dienkripsi dan dekripsi berformat lain misal *.doc. Sebenarnya perbaikan pada algoritma

vigenere ini tidak hanya bisa menggunakan deretan fibonacci tetapi juga bisa dengan metode lain sehingga kelemahan algoritma vigenere ini benar-benar tertutupi dan tidak mungkin untuk dianalisis frekuensi.


(6)

95

1. Betha, S.2006. Pemrograman Web dengan PHP.Informatika:Bandung. 2.

http://harispradipta.blogspot.com/2009/05/deret-fibonacci-misteri-proporsi-agung.html. Tanggal akses 18 Oktober 2011.

3. http://www.nusinau.com/pengertian-css/ . Tanggal akses 20 Januari 2012.

4. http://www.scribd.com/doc/47294509/Kumpulan-Tag-HTML. Tanggal akses 20 januari 2012.

5. Kurniawan, Yusuf. Kriptografi, Keamanan Internet dan Jaringan Komunikasi. Penerbit Informatika: Bandung 2004.

6. Matematika Diskrit. http://www.informatika.org/~rinaldi/Matdis/2006-2007/Makalah/Makalah0607-38.pdf. tanggal akses 18 Oktober 2011. 7. Menezes Alfred, Oorschot Paul Van and Vanston Sean,

1996.Handbook of Applied Cryptography,CRC Press. 8. Munir, Rinaldi. Kriptografi. Informatika: Bandung, 2006.

9. Munir, Rinaldi. Matematika Diskrit. Informatika: Bandung, 2006. 10. Wicaksono Kukuh Nasrul. Modifikasi Vigenere Chiper Dengan

Menggunakan Substitusi Berulangan Pada Kuncinya.

http://www.informatika.org/~rinaldi/Kriptografi/2008-2009/makalah1/MakalahIF30581-2009-a002.pdf. Tanggal akses 20 Januari 2012.

Hak Cipta © milik UPN "Veteran" Jatim :