티스토리 뷰

이전글에서 자바 암호화 예제를 실행했는데 java.security.InvalidKeyException: Parameters missing 오류가 발생했다.


해결방법을 살펴보자.


실행해보면 암호화는 되는데, 복호화도중 파라메터가 없다고 에러가 발생한다. 예상한대로라면 암호화할때도 에러가 나야하는데, 불행히도 암호화는 정상적으로 작동한다. 왜냐면 암호화할때는 IV를 지정해주지 않으면, 자동적으로 랜덤 IV를 만들어서 사용해버린다.


그래서 암호화부분에서는 에러가 발생안하고 암호화가 되었는데 복호화 부분에서 에러가 발생한 것이였다.


그래서 복호화 하는 decAES 메소드에서


c.init(Cipher.DECRYPT_MODE, keySpec); 이렇게 되어 있는 부분을


String str="12345678901234";

byte[] iv=str.getBytes();

IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);

c.init(Cipher.DECRYPT_MODE, keySpec, ivParameterSpec);


이렇게 바꿔서 실행했더니 java.security.InvalidKeyException: Parameters missing 오류는 발생하지 않았으나 java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long


Exception이 났다. 에러메시지 보면 알겠지만 16 바이트가 안되서 그런거다. 그래서 String str="12345678901234"; 이부분을 String str="1234567890123456"; 해주니 위의 Exception 은 발생하지 않았으나


javax.crypto.BadPaddingException: Given final block not properly padded 가 발생하였다. 


해결방법은 다음글에..


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함