· 7 years ago · Mar 20, 2018, 07:52 PM
1import javax.crypto.Cipher;
2import javax.crypto.KeyGenerator;
3import javax.crypto.SecretKey;
4import javax.crypto.SecretKeyFactory;
5import javax.crypto.spec.PBEKeySpec;
6import javax.crypto.spec.PBEParameterSpec;
7import javax.crypto.spec.SecretKeySpec;
8import java.security.Key;
9import java.security.SecureRandom;
10import java.security.Security;
11
12public class SecureProviderTest {
13 @Test
14 public void use_jdk_aes128() throws Exception {
15 String source = "Hala Madrid";
16 // generate key
17 KeyGenerator keyGen = KeyGenerator.getInstance("AES");
18 keyGen.init(128);
19 SecretKey secretKey = keyGen.generateKey();
20 byte[] keyEncoded = secretKey.getEncoded();
21
22 // convert key
23 Key key = new SecretKeySpec(keyEncoded, "AES");
24
25 // encrypt
26 Cipher encryptCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
27 encryptCipher.init(Cipher.ENCRYPT_MODE, key);
28 byte[] encryptBytes = encryptCipher.doFinal(source.getBytes());
29 String cipherText = Base64.encodeBase64String(encryptBytes);
30 System.out.println("cipher text: " + cipherText);
31
32 // decrypt
33 Cipher decryptCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
34 decryptCipher.init(Cipher.DECRYPT_MODE, key);
35 byte[] plainBytes = decryptCipher.doFinal(Base64.decodeBase64(cipherText));
36 String plainText = new String(plainBytes);
37 System.out.println("plain text: " + plainText);
38 }
39
40 @Test
41 public void use_bc_aes128() throws Exception {
42 String source = "Hala Madrid";
43 Security.addProvider(new BouncyCastleProvider());
44
45 // generate key
46 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES", "BC");
47 keyGenerator.init(128);
48 SecretKey secretKey = keyGenerator.generateKey();
49 byte[] keyEncoded = secretKey.getEncoded();
50
51 // convert key
52 Key key = new SecretKeySpec(keyEncoded, "AES");
53
54 // encrypt
55 Cipher encryptCipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
56 encryptCipher.init(Cipher.ENCRYPT_MODE, key);
57 byte[] encryptBytes = encryptCipher.doFinal(source.getBytes());
58 String cipherText = Base64.encodeBase64String(encryptBytes);
59 System.out.println("cipher text: " + cipherText);
60
61 // decrypt
62 Cipher decryptCipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
63 decryptCipher.init(Cipher.DECRYPT_MODE, key);
64 byte[] plainBytes = decryptCipher.doFinal(Base64.decodeBase64(cipherText));
65 String plainText = new String(plainBytes);
66 System.out.println("plain text: " + plainText);
67 }
68}