· 7 years ago · Jun 04, 2018, 11:32 AM
1String password = "MyPassword1";
2String salt = "MysaltString"; //Will switch to random salt generation.
3String plainText = "Quick Brown Fox";
4
5
6SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
7KeySpec spec = new PBEKeySpec(password.toCharArray(), salt.getBytes(), 1024, 256);
8SecretKey tmp = factory.generateSecret(spec);
9SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
10
11/* Encrypt the message. */
12Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
13cipher.init(Cipher.ENCRYPT_MODE, secret);
14AlgorithmParameters params = cipher.getParameters();
15byte[] iv = params.getParameterSpec(IvParameterSpec.class).getIV();
16byte[] ciphertext = cipher.doFinal(plainText.getBytes("UTF-8"));
17
18/* Decrypt the message, given derived key and initialization vector. */
19Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
20cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(iv));
21String plaintext = new String(cipher.doFinal(ciphertext), "UTF-8");
22
23var password = "MyPassword1";
24var salt = "MysaltString"; //Will switch to random salt generation.
25
26var derivedKey = forge.pkcs5.pbkdf2(password, salt, 1024, 32);
27input = forge.util.createBuffer(encrypted);
28var decipher = forge.cipher.createDecipher('AES-CBC', derivedKey);
29decipher.start({iv: iv});
30decipher.update(input);
31res = decipher.finish();