Pada postingan sebelumnya saya memposting tentang enkripsi dan dekripsi sederhana dengan cara menggantikan kata yang di input dengan menggeser hurufnya sesuai dengan angka pergeseran yang di input.
kali ini saya membuat penyandian menggunakan Algoritma Blowfish apa itu Algoritma Blowfish, menurut wikipedia https://id.wikipedia.org/wiki/Blowfish_(penyandian)
Blowfish merupakan algoritma kunci simetrik cipher blok yang dirancang pada tahun 1993 oleh Bruce Schneier untuk menggantikan DES. Pada saat itu banyak sekali rancangan algoritma yang ditawarkan, namun hampir semua terhalang oleh paten atau kerahasiaan pemerintah Amerika. Schneier menyatakan bahwa blowfish bebas paten dan akan berada pada domain publik. Dengan pernyataan Schneier tersebut blowfish telah mendapatkan tempat di dunia kriptografi, khususnya bagi masyarakat yang membutuhkan algoritma kriptografi yang cepat, kuat, dan tidak terhalang oleh lisensi.Keberhasilan blowfish dalam menembus pasar telah terbukti dengan diadopsinya blowfish sebagai Open Cryptography Interface (OCI) pada kernel linux versi 2.5 keatas. Dengan diadopsinya blowfish, maka telah menyatakan bahwa dunia open source menganggap blowfish adalah salah satu algoritma yang terbaik. Kesuksesan blowfish mulai memudar setelah kehadiran algoritma-algoritma dengan ukuran blok yang lebih besar, seperti AES. AES sendiri memang dirancang untuk menggantikan DES. Sehingga secara keseluruhan AES lebih unggul dari DES dan juga blowfish.
oke langsung saja berikut ini contoh programnyaBlowfish adalah algoritma kriptografi kunci simetrik cipher blok dengan panjang blok tetap sepanjang 64 bit[1]. Algortima tersebut juga menerapkan teknik kunci yang berukuran sembarang. Ukuran kunci yang dapat diterima oleh blowfish adalah antara 32 hingga 448 bit, dengan ukuran standar sebesar 128 bit. Blowfish memanfaatkan teknik pemanipulasian bit dan teknik pemutaran ulang dan pergiliran kunci yang dilakukan sebanyak 16 kali. Algoritma utama terbagi menjadi dua sub-algoritma utama, yaitu bagian ekspansi kunci dan bagian enkripsi-dekripsi data.Pengekspansian kunci dilakukan pada saat awal dengan masukan sebuah kunci dengan panjang 32 hingga 448 bit, dan keluaran adalah sebuah larik sub-kunci dengan total 4168 bita. Bagian enkripsi-dekripsi data terjadi dengan memanfaatkan perulangan 16 kali terhadap jaringan feistel. Setiap perulangan terdiri dari permutasi dengan masukan adalah kunci, dan substitusi data. Semua operasi dilakukan dengan memanfaatkan operasi xor dan penambahan. Operasi penambahan dilakukan terhadap empat larik lookup yang dilakukan setiap putarannya.
Nama file : blowFishCipher.java
import java.util.Scanner;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class blowFishCipher {
public static void main(String[] args) throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance("blowfish");
SecretKey secretKey = keyGenerator.generateKey();
Cipher cipher = Cipher.getInstance("blowfish");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
Scanner sc = new Scanner(System.in);
System.out.print("Masukan Kata Yang Ingin Di Enkripsi : ");
String inputText = sc.nextLine();
byte[] enkripsi = cipher.doFinal(inputText.getBytes());
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] dekripsi = cipher.doFinal(enkripsi);
System.out.println("Kata Setelah Di Enkripsi : " + new String(enkripsi));
System.out.println("Kata Kembali Di Dekripsi : " + new String(dekripsi));
}
}
Output
run:
Masukan Kata Yang Ingin Di Enkripsi : ngejava.com
Kata Setelah Di Enkripsi : ���rM: ���ҿp�
Kata Kembali Di Dekripsi : ngejava.com
BUILD SUCCESSFUL (total time: 9 seconds)
selamat mencoba, semoga bermanfaat