Development

[Java] PKCS7Padding NoSuchAlgorithmException

devbible 2017. 9. 7. 15:50

AES 암호화시 입력값은 특정 바이트 배수가 되어야 하는데, 그 배수중 모자란 값을 채우는게 패딩이다.

보통 PKCS 패딩을 쓰는데, 5와 7의 정의는 조금 다르다.

PKCS5 블록크기 : 8바이트

PKCS7 블록크기: 1~255 바이트 (any, 암호화 방식에 따라 동적 적용)


그런데 Java 에서 AES/CBC/PKCS7Padding 암호화를 적용하려하는데 아래와 같은 오류가 발생했다.

java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/CBC/PKCS7Padding

Java에서는 PKCS7이 없다. 아니 PKCS5가 PKCS7로 수행되지만, PKCS5란 이름으로 JCA(Java Cryptography Architecture)에 정의되어 있다.


아래 JCE (Java Cryptography Extension) 문서를 보면 나와있다.. 고 한다. 영문임

http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html


그래서 Java에서는 PKCS5 로 설정하더라도, 다른 언어(C# 등)에서 PKCS7 로 설정한것과 정확히 호환된다.



[작성] devbible.tistory.com