LANGUAGE/!$%!% ERROR NOTE 2017. 11. 2. 11:02

!markdown


# Java


## AES256


`AES128`은 16바이트의 Key를, `AES192`은 24바이트의 Key를, `AES256`은 32바이트의 Key를 사용한다.




### 1. Error (에러)


```log

java.security.InvalidKeyException: Illegal key size or default parameters

```


또는


```log

Unsupported keysize or algorithm parameters.

```




### 2. Problem (문제)


자바는 기본적으로 암호화키를 128비트(16바이트)까지 사용할 수 있도록 제한되어있다.


그 이유는 미국 수출 통상법에 의해 제한이 걸린 것이라고 한다.


하지만, 제한을 풀 수 있다.





### 3. Solved (해결)


#### 1. 사용하는 JDK의 버전에 맞춰서, 사이트에 들어가서 `Accept License Agreement`를 체크하고 다운받자.


- JDK1.5: [http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR](http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR)


- JDK1.6: [http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html](http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html)


- JDK1.7: [http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html](http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html)


- JDK1.8: [http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)


- IBM 이라면 이곳을 참조: [https://www.ibm.com/support/knowledgecenter/ko/SSYMRC_6.0.0/com.ibm.jazz.install.doc/topics/c_kerSso_svr_aes256_encr_java.html](https://www.ibm.com/support/knowledgecenter/ko/SSYMRC_6.0.0/com.ibm.jazz.install.doc/topics/c_kerSso_svr_aes256_encr_java.html)


#### 2. 다운받은 파일의 압축을 해제후, 아래 경로에 덮어씌운다. 

(다시 제한을 걸고 싶을 때를 대비하여 해당 폴더를 백업해도 좋다.)


```

{JAVA_HOME}/jre/lib/security

```




### 4. reference (참조)


- Java JCE(Java Cryptography Extension): [http://kwonnam.pe.kr/wiki/java/jce](http://kwonnam.pe.kr/wiki/java/jce)