我試圖用AES解密一些數據。我已經擁有一個256位密鑰和16字節IV這樣的:JAVA AES 256解密
String key = "Hh1s1f4T2mpN3yCh4ngeL8t3r\\.Thxpp";
int[] v = {11, 1, 555, 222, 241, 21, 11, 33, 35, 91, 45, 6, 14, 30, 22, 234};
String IV = Arrays.toString(v);
我已經告訴填充應該是PKCS7但是當我初始化密碼與AES/CBC/PKCS7PADDING
它說:Cannot find any provider supporting AES/CBC/PKCS7PADDING
如果我用AES/CBC/PKCS5PADDING
我得到Illegal key size
但我檢查,關鍵尺寸爲32
public static String decrypt(String key, String initVector, String encrypted) {
try {
System.out.println("Key size: " + key.getBytes("UTF-8").length);
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
byte[] original = cipher.doFinal(Base64.decodeBase64(encrypted));
return new String(original);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
感謝您的澄清,這解決了這個問題。很有趣,我們的生產環境確實包含了很多其他人所報道的這些庫。生產中的差異在於使用OpenJDK vs使用Oracle的開發。 –