티스토리 뷰

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

'Development' 카테고리의 다른 글

[Build] 빌드시 EXE 에 DLL 포함 시키기  (0) 2017.09.19
[Nuget] json.net 설치불가  (0) 2017.09.19
[C#] string vs String  (0) 2017.09.07
[Redis] Redis Download for windows  (0) 2017.06.18
[C/Cpp] #include <file> vs #include "file"  (0) 2017.04.03
댓글