발생한 에러
- java.security.InvalidKeyException: IV required when decrypting. Use IvParameterSpec or AlgorithmParameters to provide it.
(해독 시 IV 가 필요합니다. IvParameterSpec 또는 AlgorithmParameters를 사용하여 제공하십시오.)
발생 원인
- Decrypt 시에는 iv값이 필요한데 해당 값이 없어 발생하는 문제
해결방법
1. Exception 에러메시지에서 이야기하는 것과 같이 IvParameterSpec 이나 AlgorithmParameters 를 추가
2. iv값 및 ivspec 추가후 cipher.init 시에 ivspec 매개변수 추가
3. Encrypt 시에도 iv값이 추가되어야 함
예시
byte[] iv = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
IvParameterSpec ivspec = new IvParameterSpec(iv);
KeyStore.SecretKeyEntry secretKeyEntry = (KeyStore.SecretKeyEntry) keyStore.getEntry(ALIAS,null);
SecretKey secretKey = secretKeyEntry.getSecretKey();
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKey, ivspec);