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