Iam пытается шифровать данные с использованием AES-шифрования в моем приложении Java. Когда я запускаю код (ниже), я получаю:AES java.security.InvalidAlgorithmParameterException: Неверная длина IV: должно быть 16 байт.
java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long
at com.sun.crypto.provider.CipherCore.init(CipherCore.java:525)
at com.sun.crypto.provider.AESCipher.engineInit(AESCipher.java:346)
at javax.crypto.Cipher.implInit(Cipher.java:806)
at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
at javax.crypto.Cipher.init(Cipher.java:1396)
at javax.crypto.Cipher.init(Cipher.java:1327)
at TestEncription.encryptData(TestEncription.java:164)
at TestEncription.encodeRequest(TestEncription.java:109)
at TestEncription.main(TestEncription.java:65)
Код:
public String encryptData(String requestData, byte[] sessionKey,
String messageRefNo) throws Exception {
SecretKey secKey = new SecretKeySpec(sessionKey, "AES");
Cipher cipher = Cipher.getInstance(symmetricKeyAlgorithm);
IvParameterSpec ivSpec = new IvParameterSpec(messageRefNo.getBytes("UTF-8"));
System.out.println("Seckey: "+secKey);
cipher.init(Cipher.ENCRYPT_MODE, secKey, ivSpec);
byte[] newData = cipher.doFinal(requestData.getBytes());
return Base64.encodeBase64String(newData);
}
Что такое, что происходит не так здесь?
«Неверная длина IV: должно быть 16 байт,» вы обеспечиваете IV байт [], который давно не ровно 16 байт. –
Как насчет сообщения об ошибке неясно? – zaph