Ich versuche, mit AES einige Daten zu entschlüsseln. Ich habe ein 256-Bit-Schlüssel und 16-Byte-IV wie diese gegeben worden:JAVA AES 256 Entschlüsseln
die Polsterung sagteString 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);
Ich habe PKCS7 sein sollte, aber wenn ich die Chiffre mit AES/CBC/PKCS7PADDING
init heißt es: Cannot find any provider supporting AES/CBC/PKCS7PADDING
Wenn ich benutze AES/CBC/PKCS5PADDING
ich Illegal key size
aber ich überprüft haben, dass die Schlüsselgröße ist 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;
}
Danke für die Klärung, das hat das Problem gelöst. Es ist lustig, unsere Produktionsumgebung enthält diese Bibliotheken, so wie andere Leute berichtet haben. Der Unterschied, der Produktion ist, verwendet OpenJDK vs Dev mit Oracle. –