· 6 years ago · Oct 26, 2019, 10:48 AM
1private static void doTest() throws Exception {
2 Security.addProvider(new BouncyCastleProvider());
3
4 byte[] clearData = "1234567890".getBytes();
5 SecretKey secretKey = new SecretKeySpec("0123456789ABCDEF".getBytes(), "AES");
6 AlgorithmParameterSpec IVspec = new IvParameterSpec("0123456789ABCDEF".getBytes());
7
8 // encrypt with PKCS7 padding
9 Cipher encrypterWithPad = Cipher.getInstance("AES/CBC/PKCS7PADDING", "BC");
10 encrypterWithPad.init(Cipher.ENCRYPT_MODE, secretKey, IVspec);
11 byte[] encryptedData = encrypterWithPad.doFinal(clearData);
12 System.out.println("Encryped data (" + encryptedData.length + " bytes): \t" + toHexString(encryptedData));
13
14 // decrypt with PKCS7 pad
15 Cipher decrypterWithPad = Cipher.getInstance("AES/CBC/PKCS7PADDING", "BC");
16 decrypterWithPad.init(Cipher.DECRYPT_MODE, secretKey, IVspec);
17 byte[] buffer1 = new byte[encryptedData.length];
18 int decryptLen1 = decrypterWithPad.doFinal(encryptedData, 0, encryptedData.length, buffer1);
19 System.out.println("Decrypted with Pad (" + decryptLen1 + " bytes): \t" + buffer1);
20
21 // decrypt without PKCS7 pad
22 Cipher decrypterWithoutPad = Cipher.getInstance("AES/CBC/NOPADDING", "BC");
23 decrypterWithoutPad.init(Cipher.DECRYPT_MODE, secretKey, IVspec);
24 byte[] buffer2 = new byte[encryptedData.length];
25 int decryptLen2 = decrypterWithoutPad.doFinal(encryptedData, 0, encryptedData.length, buffer2);
26 System.out.println("Decrypted without Pad (" + decryptLen2 + " bytes):\t" + toHexString(buffer2));
27 }