· 9 years ago · Jan 16, 2017, 10:10 AM
1byte[] a = encryptFIN128AES("pls");
2 String b = decryptFIN128AES(a);
3 Log.e("AES_Test", "b = " + b);
4
5
6/**
7 * Encrypts a string with AES (128 bit key)
8 * @param fin
9 * @return the AES encrypted byte[]
10 */
11private byte[] encryptFIN128AES(String fin) {
12
13 SecretKeySpec sks = null;
14
15 try {
16 sks = new SecretKeySpec(generateKey("Test1".toCharArray(), "Test2".getBytes()).getEncoded(),"AES");
17 } catch (Exception e) {
18 Log.e("encryptFIN128AES", "AES key generation error");
19 }
20
21 // Encode the original data with AES
22 byte[] encodedBytes = null;
23 try {
24 Cipher c = Cipher.getInstance("AES");
25 c.init(Cipher.ENCRYPT_MODE, sks);
26 encodedBytes = c.doFinal(fin.getBytes());
27 } catch (Exception e) {
28 Log.e("encryptFIN128AES", "AES encryption error");
29 }
30
31 return encodedBytes;
32
33}
34
35
36/**
37 * Decrypts a string with AES (128 bit key)
38 * @param encodedBytes
39 * @return the decrypted String
40 */
41private String decryptFIN128AES(byte[] encodedBytes) {
42
43 SecretKeySpec sks = null;
44
45 try {
46 sks = new SecretKeySpec(generateKey("Test1".toCharArray(), "Test2".getBytes()).getEncoded(),"AES");
47 } catch (Exception e) {
48 Log.e("decryptFIN128AES", "AES key generation error");
49 }
50
51 // Decode the encoded data with AES
52 byte[] decodedBytes = null;
53 try {
54 Cipher c = Cipher.getInstance("AES");
55 c.init(Cipher.DECRYPT_MODE, sks);
56 decodedBytes = c.doFinal(encodedBytes);
57 } catch (Exception e) {
58 Log.e("decryptFIN128AES", "AES decryption error");
59 }
60
61 return Base64.encodeToString(decodedBytes, Base64.DEFAULT);
62}
63
64
65public static SecretKey generateKey(char[] passphraseOrPin, byte[] salt)
66 throws NoSuchAlgorithmException, InvalidKeySpecException {
67
68 final int iterations = 1000;
69
70 // Generate a 256-bit key
71 final int outputKeyLength = 128;
72
73 SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
74 KeySpec keySpec = new PBEKeySpec(passphraseOrPin, salt, iterations, outputKeyLength);
75 SecretKey secretKey = secretKeyFactory.generateSecret(keySpec);
76 return secretKey;
77}
78
79E/AES_Test: b = cGxz