Вы можете получить InvalidKeyException: Ошибка отсутствия параметров при выполнении шифрования или дешифрования AES для пароля или любой конфиденциальной информации. Трассировка стека исключений выглядит следующим образом:
Error while decrypting: java.security.InvalidKeyException: Parameters missing
Решение InvalidKeyException
Используйте класс IvParameterSpec, который определяет вектор инициализации(IV). Вектор инициализации необходим для любого шифра в любом режиме обратной связи, например CBC.
private static String secretKey = "boooooooooom!!!!";private static String salt = "ssshhhhhhhhhhh!!!!";public static String decrypt(String strToDecrypt, String secret) {try{byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };IvParameterSpec ivspec = new IvParameterSpec(iv);SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");KeySpec spec = new PBEKeySpec(secretKey.toCharArray(), salt.getBytes(), 65536, 256);SecretKey tmp = factory.generateSecret(spec);SecretKeySpec secretKey = new SecretKeySpec(tmp.getEncoded(), "AES");Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");cipher.init(Cipher.DECRYPT_MODE, secretKey, ivspec);return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));}catch(Exception e) {System.out.println("Error while decrypting: " + e.toString());}return null;}
Ссылка: Класс InvalidKeyException