· 7 years ago · Jan 05, 2019, 06:44 AM
1//var salt = CryptoJS.lib.WordArray.random(256/32);
2 //var iv = CryptoJS.lib.WordArray.random(256/32);
3 //console.log('salt '+ salt );
4 //console.log('iv '+ iv );
5
6 var salt = CryptoJS.enc.Hex.parse("28698aadc97f3ad8");
7 var iv = CryptoJS.enc.Hex.parse("73ac39603da6e205");
8 console.log('salt '+ salt );
9 console.log('iv '+ iv );
10 var key128Bits = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 256/32 });
11 console.log( 'key128Bits '+ key128Bits);
12 var key128Bits100Iterations = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 256/32, iterations: 100 });
13 console.log( 'key128Bits100Iterations '+ key128Bits100Iterations);
14 var encrypted = CryptoJS.AES.encrypt("Message", key128Bits100Iterations, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
15 console.log('encrypted '+ encrypted );
16
17
18// ------------
19
20 var salt = CryptoJS.enc.Hex.parse("28698aadc97f3ad8");
21 var iv = CryptoJS.enc.Hex.parse("73ac39603da6e205");
22 var encrypted = "PZL3ZW3hSLwzfxSzrQh+0Q==";
23 console.log('salt '+ salt );
24 console.log('iv '+ iv );
25 var key = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 256/32, iterations: 100 });
26 console.log( 'key '+ key);
27 var decrypt = CryptoJS.AES.decrypt(encrypted, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });
28 var ddd = decrypt.toString(CryptoJS.enc.Utf8);
29 console.log('ddd '+ddd);
30
31
32 ------------
33
34import javax.crypto.BadPaddingException;
35import javax.crypto.Cipher;
36import javax.crypto.IllegalBlockSizeException;
37import javax.crypto.SecretKey;
38import javax.crypto.SecretKeyFactory;
39import javax.crypto.spec.IvParameterSpec;
40import javax.crypto.spec.PBEKeySpec;
41import javax.crypto.spec.SecretKeySpec;
42
43import org.apache.commons.codec.binary.Base64;
44
45public class AES {
46
47 private static final String password = "test";
48 private static String salt = "28698aadc97f3ad8";
49 private static String iv = "73ac39603da6e205";
50 private static int pswdIterations = 65536 ;
51 private static int keySize = 256;
52 private byte[] ivBytes;
53
54 public String encrypt(String plainText) throws Exception {
55
56 byte[] saltBytes = salt.getBytes("UTF-8");
57 byte[] ivBytes = iv.getBytes("UTF-8");
58 IvParameterSpec iv = new IvParameterSpec(ivBytes);
59
60 // Derive the key
61 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
62 PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), saltBytes, pswdIterations, keySize);
63
64 SecretKey secretKey = factory.generateSecret(spec);
65 SecretKeySpec secret = new SecretKeySpec(secretKey.getEncoded(), "AES");
66
67 //encrypt the message
68 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
69 cipher.init(Cipher.ENCRYPT_MODE, secret, iv);
70// AlgorithmParameters params = cipher.getParameters();
71// ivBytes = params.getParameterSpec(IvParameterSpec.class).getIV();
72 byte[] encryptedTextBytes = cipher.doFinal(plainText.getBytes("UTF-8"));
73 return new Base64().encodeAsString(encryptedTextBytes);
74 }
75
76 @SuppressWarnings("static-access")
77 public String decrypt(String encryptedText) throws Exception {
78
79 byte[] saltBytes = salt.getBytes("UTF-8");
80 byte[] encryptedTextBytes = new Base64().decodeBase64(encryptedText);
81
82 // Derive the key
83 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
84 PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), saltBytes, pswdIterations, keySize);
85
86 SecretKey secretKey = factory.generateSecret(spec);
87 SecretKeySpec secret = new SecretKeySpec(secretKey.getEncoded(), "AES");
88
89 // Decrypt the message
90 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
91 cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(ivBytes));
92
93
94 byte[] decryptedTextBytes = null;
95 try {
96 decryptedTextBytes = cipher.doFinal(encryptedTextBytes);
97 } catch (IllegalBlockSizeException e) {
98 e.printStackTrace();
99 } catch (BadPaddingException e) {
100 e.printStackTrace();
101 }
102
103 return new String(decryptedTextBytes);
104 }
105
106 public static void main(String[] args) throws Exception {
107 AES aes = new AES();
108 String encrypt = aes.encrypt("Hello");
109 System.out.println("Encrypt "+encrypt);
110
111// System.out.println("Decrypt "+aes.decrypt(encrypt));
112// System.out.println(aes.decrypt("Z/UIpd9jPZB2RwkTWkPHkQ=="));
113
114
115 }
116}