· 9 years ago · Dec 13, 2016, 03:52 PM
1import java.security.SecureRandom;
2import javax.crypto.Cipher;
3import javax.crypto.KeyGenerator;
4import javax.crypto.SecretKey;
5import javax.crypto.spec.SecretKeySpec;
6import java.util.Random ;
7import javax.swing.JOptionPane;
8class Blowfish {
9byte[] skey = new byte[1000];
10String skeyString;
11static byte[] raw;
12String inputMessage,encryptedData,decryptedMessage;
13
14public Blowfish() {
15try {
16generateSymmetricKey();
17
18inputMessage=JOptionPane.showInputDialog(null,"Enter message to encrypt");
19byte[] ibyte = inputMessage.getBytes();
20byte[] ebyte=encrypt(raw, ibyte);
21String encryptedData = new String(ebyte);
22System.out.println("Encrypted message "+encryptedData);
23JOptionPane.showMessageDialog(null,"Encrypted Data "+"\n"+encryptedData);
24
25byte[] dbyte= decrypt(raw,ebyte);
26String decryptedMessage = new String(dbyte);
27System.out.println("Decrypted message "+decryptedMessage);
28
29JOptionPane.showMessageDialog(null,"Decrypted Data "+"\n"+decryptedMessage);
30}
31catch(Exception e) {
32System.out.println(e);
33}
34
35}
36void generateSymmetricKey() {
37try {
38Random r = new Random();
39int num = r.nextInt(10000);
40String knum = String.valueOf(num);
41byte[] knumb = knum.getBytes();
42skey=getRawKey(knumb);
43skeyString = new String(skey);
44System.out.println("Blowfish Symmetric key = "+skeyString);
45}
46catch(Exception e) {
47System.out.println(e);
48}
49}
50private static byte[] getRawKey(byte[] seed) throws Exception {
51KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
52SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
53sr.setSeed(seed);
54kgen.init(128, sr); // 128, 256 and 448 bits may not be available
55SecretKey skey = kgen.generateKey();
56raw = skey.getEncoded();
57return raw;
58}
59private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
60SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");
61Cipher cipher = Cipher.getInstance("Blowfish");
62cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
63byte[] encrypted = cipher.doFinal(clear);
64return encrypted;
65}
66
67private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
68SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");
69Cipher cipher = Cipher.getInstance("Blowfish");
70cipher.init(Cipher.DECRYPT_MODE, skeySpec);
71byte[] decrypted = cipher.doFinal(encrypted);
72return decrypted;
73}
74public static void main(String args[]) {
75Blowfish bf = new Blowfish();
76}
77}