JCA(Java Cryptography Architecture)를 사용하여 암호화/복호화를 구현하려고 한다.
다음 조건과 같은 개발 환경으로 진행하였다.
- JDK Version : JAVA SE 1.7.x
- Crypto Algorithm : AES 256bit
그런데 아래와 같은 오류가 발생하였다.
java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1011)
at javax.crypto.Cipher.implInit(Cipher.java:786)
at javax.crypto.Cipher.chooseProvider(Cipher.java:849)
at javax.crypto.Cipher.init(Cipher.java:1213)
at javax.crypto.Cipher.init(Cipher.java:1153)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
구글링을 통해 포스팅된 내용을 보니 AES의 Maximum Keysize가 128bit이기 때문이라고 한다.
정책상 길이가 제한이 걸려있다고 하는데 다음은 암호화 알고리즘별 Maximum Keysize이다.
Algorithm | Maximum Keysize |
---|---|
DES | 64 |
DESede | * |
RC2 | 128 |
RC4 | 128 |
RC5 | 128 |
RSA | * |
all others | 128 |
그럼 256bit를 사용하기 위해서는 JCE(Java Cryptography Extension)를 설치해주면 되는데...
1. 먼저 아래경로에서 정책파일을 다운로드한다.
- JDK 6 : http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
- JDK 7 : http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
2. 다운로드된 파일(UnlimitedJCEPolicyJDKx.zip)의 압축을 풀어 local_policy.jar, US_export_policy.jar 를
JDK가 설치된 디렉토리의 \jre\bin\security\ 에 넣어준다. (기존 파일은 백업을 받아놓는게 좋을 것 같다.)
3. 끝
Reference
- http://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html
- http://www.oracle.com/technetwork/java/javase/downloads/index.html
- http://shuiky.tistory.com/251
'Dev Story > dev' 카테고리의 다른 글
[springframework] org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException (0) | 2013.03.20 |
---|---|
[java] Convert bytes, hex, hex string, string (0) | 2013.03.11 |
[junit] junit.framework.AssertionFailedError: No tests found in com.mydomain.test (0) | 2013.02.22 |
Web Stress Tool (0) | 2013.02.20 |
[postgresql] extension dblink (0) | 2013.02.16 |