· 7 years ago · Feb 12, 2018, 12:18 PM
1//Encrypt
2EncryptHelper helper = new EncryptHelper();
3EncryptedData a = helper.encrypt("key123", salt, "This is the text to encrypt");
4
5//Decrypt
6EncryptHelper helper1 = new EncryptHelper();
7String b = helper1.decrypt("key123", salt, a);
8
9System.out.println(b);
10
11public EncryptedData(byte[] iv, byte[] cipherText)
12{
13 _iv = iv;
14 _cipherText = cipherText;
15}
16
17public byte[] getIv() { return _iv; }
18public byte[] getCipherText() { return _cipherText; }
19
20/* Encrypt the message. */
21 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
22 cipher.init(Cipher.ENCRYPT_MODE, secret);
23 AlgorithmParameters params = cipher.getParameters();
24
25 byte[] iv = params.getParameterSpec(IvParameterSpec.class).getIV();
26 byte[] ciphertext = cipher.doFinal(data.getBytes("UTF-8"));
27
28 return new EncryptedData(iv, ciphertext);
29 }
30 catch(Exception ex)
31 {
32 System.out.println(ex.getMessage());
33 }
34
35 return null;
36}
37
38public String decrypt(String password, byte[] salt, EncryptedData b)
39{
40 try
41 {
42 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
43 PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, 65536, 256);
44 SecretKey tmp = factory.generateSecret(spec);
45 SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
46
47 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
48 cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(b.getIv()));
49 String plaintext = new String(cipher.doFinal(b.getCipherText()), "UTF-8");
50
51 return plaintext;
52 }
53 catch(Exception ex)
54 {
55 return ex.getMessage();
56 }
57}