자바 AE256 암호화 관련 에러
파라미터가 제대로 넘어가지 않아 오류가 발생하였다.
Java의 제한적인 키 길이 정책
Java에서 Cipher
클래스를 이용해 AES256 암호화를 사용하면 java.security.InvalidKeyException: Illegal key size
라는 예외가 발생합니다. Java에서 기본적으로 128bit(16byte)로 키 길이를 제한해뒀고, 기본 키 길이를 초과하는 경우 이 예외가 발생합니다.
Unlimited Strength
Oracle에서는 길이 제한을 해제하고 싶은 사용자를 위해 JCE Unlimited Strength 정책 파일을 번들로 제공합니다.
방법
현재 사용중인 Java 버전에 맞춰 Unlimited Strength 정책 파일을 다운 받습니다.
다운 받은 파일안의 local_policy.jar
, US_export_policy.jar
파일을 <JAVA_HOME>/jre/lib/security/
폴더로 옮겨 기존 정책을 덮어씌웁니다. 그러면 JCE로 사용 가능한 모든 암호화의 키 길이 제한이 해제됩니다.
추가로 8u151 Release Notes에서는 해당 버전부터 별도의 다운로드없이 Unlimited Strength 정책을 설정할 수 있게 추가 번들이 같이 제공됩니다.
해당 버전에서 정책 파일은 <JAVA_HOME>/jre/lib/security/policy
경로에 limited와 unlimited 폴더로 구성되며, unlimited 설정은 <JAVA_HOME>/jre/lib/security/java.security
파일을 열어 아래와 같은 부분을 찾아 주석 처리(#)를 지워주면 제한 해제된 정책을 사용할 수 있습니다.
1
crypto.policy=unlimited