Algoritma Blowfish LANDASAN TEORI

Karena telah menghasilkan sisa pembagian sama dengan 0, maka proses berakhir dan didapatlah GCD50, 20 = 10. 2.3.4. Algoritma Euclid dan Extended Euclid Teorema yang digunakan sebagai dasar dari algortima Euclid adalah sebagai berikut: Jika � = qb + r maka GCD�, b = GCDb, r………….……1 Algoritma Euclid menggunakan rumus di atas secara berulang untuk mendapatkan GCD, yaitu dengan memperkecil kedua bilangan yang dijadikan patokan untuk GCD setiap kali mengulang, tanpa merubah nilai GCD itu sendiri.Hasil dari komputasi GCD di dapat saat kedua patokan untuk GCD tidak dapat diperkecil lagi. Untuk melakukan komputasi d = GCD �, b, pertama dilakukan preprocessing sebagai berikut : 1. Jika � = 0 maka d = |b| dan jika b = 0 maka d = |�| GCDtidak dapat dikomputasi jika � = b = 0. 2. Karena GCD �, b = GCD-�, b = GCD�, -b = GCD-�, -b, kita dapat mentransformasikan komputasi menjadi d = GCD| �|, |b|, jadi kedua bilangan menjadi positif. 3. Karena GCD �, b = GCDb,�, kita dapat saling tukar � dan b jika �b, dengan hasil �b. 4. Jika � = b maka d = �. Setelah preprocessing, jika � ≠ 0, b≠ 0, � ≠b, maka komputasi sudah dirubah menjadi d = GCD �, b dengan �b 0 Kromodimoeljo, 2010.

2.4 Algoritma Blowfish

Blowfish adalah algoritma kunci simetri, yang berarti menggunakan kunci yang sama untuk melakukan enkripsi dan dekripsi file. Blowfish juga merupakan cipher block, yang berarti selama proses enkripsi dan dekripsi, Blowfish akan membagi pesan menjadi blok-blok dengan ukuran yang sama panjang. Panjang blok untuk algoritma Blowfish adalah 64-bit. Pesan yang bukan merupakan kelipatan delapan byte akan ditambahkan bit-bit tambahan padding sehingga ukuran untuk tiap blok sama. Algoritma dalam Blowfish terbagi menjadi dua bagiian, yaitu key expansion dan data encryption. Proses key expansion akan melakukan konversi sebuah kuci mulai dari 56 byte sampai beberapa array subkunci dengan total mencapai 4168 byte. Proses data encryptionterjadi pada Universitas Sumatera Utara jaringan feistel, mengandung fungsi pengulangan sederhana sebanyak enam belas kali. Setiap iterasi, terdiri dari sebuah perutasi yang tidak bergantung pada kunci dan sebuah subsitusi yang tidak bergantung pada data dan kunci. Semua operasi merupakan penambahan dan XOR pada word 32-bit. Operasi penambahan yang dilakukan hanya merupakan empat indeks array data lookup pada setiap iterasi. 2.4.1 Langkah kerja Blowfish A. Proses Ekspansi Kunci 1. Inisialisasi P-array yang pertama dan juga empat S-box, berututan, dengan string yang telah pasti.String tersebut terdiri dari digit-digit heksadesimal dari phi, tidak termasuk angka tiga di awal. Contoh : P1= 0x243f6a88 P2= 0x85a308d3 P3= 0x13198a2e P4= 0x03707344 dan seterusnya sampai dengan P18. 2. XOR-kan P1 dengan 32-bit awal kunci, XOR-kan P2 dengan 32-bit berikutnya dari kunci, dan seterusnya untuk semua bit kunci. Jika panjang kunci ternyata kurang dari jumlah Pbox, maka siklus perhitungan akan diulangi hingga semua P ter-XOR-kan. 3. Enkripsikan string yang seluruhnya nol all-zero string dengan algoritma Blowfish, menggunakan subkunci yang telah didekripsikan pada langkah 1 dan 2. 4. Gantikan P1 dan P2 dengan keluaran dari langkah 3 5. Enkripsikan keluaran langkah 3 menggunakan algoritma Blowfish dengan subkunci yang telah dimodifikasi. 6. Gantikan P3 dan P4 dengan keluaran dari langkah 5. 7. Lanjutkan langkah-langkah di atas, gantikan seluruh elemen P-array dan kemudian keempat S-box secara berurutan, dengan hasil keluaran algoritma Blowfish yang terus-menerus berubah. Universitas Sumatera Utara B. Proses Enkripsi 1. Berdasarkan metode enkripsi Blowfish, untuk langkah awal yaitu file inputan atau file soal akan dirubah menjadi binary. Proses enkripsi dan dekripsi Blowfish dilakukan dengan pemecahan file menjadi per 64 bit. Dan kemudian 64 bit ini diinisialkan “x”. 2. Masukan data “x” 64 bit ini kemudian dipecah menjadi dua bagian yang disebut dengan XR X Right dan XL X Left masing-masing 32 bit. 3. Menurut buku “Pengantar Ilmu Kriptografi” karangan Dony Ariyus [9], proses enkripsi maupun dekripsi dilakukan dengan iterasi fungsi sederhana sebanyak 16 kali. Berikut rumus enkripsi : XL = XL XOR p[i] XR = FXL XOR XR Tukar XL dan XR Dimana rumus F adalah FXL = S[1,a] + S2[2,b] mod 232 XOR S[3,c] + S[4,d] 4. Setelah iterasi ke-16, tukar XL dan XR lagi untuk melakukan pembatalan penukaran terakhir. 5. Dari semua langkah di atas, langkah terakhir adalah kembali menggabungkan XR dan XL untuk mendapatkan cipherteks. Proses enkripsi dengan algoritma Blowfish ini dapat digambarkan melalui bagan di bawah ini : Universitas Sumatera Utara Gambar 2.4 : Alur Proses Enkripsi Blowfish 6. Untuk Proses Dekripsi, langkah sama persis dengan proses enkripsi, hanya saja urutan Pbox digunakan dengan urutan terbalik.

2.5. Citra