Я пытаюсь расшифровать данные в Java, которые были зашифрованы в PHP с использованием AES-256-CB C. Метод дешифрования Java cipher.doFinal
, генерирующий исключение IllegalBlockSizeException. Может ли кто-нибудь помочь мне решить эту проблему? Стучу по голове, чтобы исправить это за последние 2 дня. Пожалуйста, дайте мне знать, если вам нужно больше информации.
public static String decrypt(String encryptedResult, String secretKey, String iv) {
String decrypted;
try {
byte[] bytes = new BigInteger(encryptedResult.trim(),16).toByteArray();
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, makeKey(secretKey), makeIv(iv));
byte[] bytesFinal = cipher.doFinal(bytes);
decrypted = new String(bytesFinal);
} catch (Exception e) {
throw new RuntimeException(e);
}
return decrypted;
}
static AlgorithmParameterSpec makeIv(String iv) {
try {
return new IvParameterSpec(iv.getBytes(StandardCharsets.UTF_8));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
static Key makeKey(String secretKey) {
return new SecretKeySpec(secretKey.getBytes(), "AES");
}