I am developing a web application to encrypt some texts with java 6.
The encrypted that I have to do is a AES (Rijndael) in CBC mode with PKCS7 padding and a 128-bi
Java only provides PKCS#5 padding, but it is the same as PKCS#7 padding. See this question on Crypto.SE:
What is the difference between PKCS#5 padding and PKCS#7 padding
They are interchangeable for the common block ciphers like AES and DES.
The Java specification list a number of encryption modes (and paddings) that needs to be supported. PKCS7Padding
is not included.
These are the AES/CBC modes any Java implementation must support.
(See this answer for more information)
Bouncy Castle does however have what you need.
Try this method
String KEY_AES = "**************";
public String encrypt(String value) {
try {
byte[] key = KEY_AES.getBytes("UTF-8");
byte[] ivs = KEY_AES.getBytes("UTF-8");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
AlgorithmParameterSpec paramSpec = new IvParameterSpec(ivs);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, paramSpec);
return Base64.encodeToString(cipher.doFinal(value.getBytes("UTF-8")), Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}