문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
java:jce [2012/04/04 18:19] kwon37xi |
java:jce [2014/05/13 18:17] kwon37xi |
||
---|---|---|---|
줄 1: | 줄 1: | ||
====== Java JCE(Java Cryptography Extension) ====== | ====== Java JCE(Java Cryptography Extension) ====== | ||
+ | |||
+ | ====== AES ====== | ||
+ | * [[http:// | ||
===== AES 키 등록시 다음과 같은 오류 발생 ===== | ===== AES 키 등록시 다음과 같은 오류 발생 ===== | ||
줄 8: | 줄 11: | ||
</ | </ | ||
이는, 기본 JCE가 128비트만 지원해서 16바이트(128bit) 키만을 사용할 수 있는 상황에서 16바이트보다 큰 키를 사용했을 때 발생한다. 아래 패치를 통해 256비트까지 확장해서 32바이트 키를 사용할 수 있게 한다. | 이는, 기본 JCE가 128비트만 지원해서 16바이트(128bit) 키만을 사용할 수 있는 상황에서 16바이트보다 큰 키를 사용했을 때 발생한다. 아래 패치를 통해 256비트까지 확장해서 32바이트 키를 사용할 수 있게 한다. | ||
+ | |||
+ | * AES 128bit : 16bit 키 지원 | ||
+ | * AES 256bit : 32bit 키 지원 | ||
다음 파일을 받아서 '' | 다음 파일을 받아서 '' | ||
줄 18: | 줄 24: | ||
* http:// | * http:// | ||
+ | 다음과 같이 AES 256bit 키를 생성하였다. 128bit로 생성하려면 256 대신 128을 사용한다. | ||
+ | [[http:// | ||
+ | <code java> | ||
+ | |||
+ | import java.security.Key; | ||
+ | |||
+ | import javax.crypto.KeyGenerator; | ||
+ | |||
+ | import org.apache.commons.codec.binary.Base64; | ||
+ | |||
+ | public class AESKeyGenerator { | ||
+ | public static void main(String[] args) throws Exception { | ||
+ | KeyGenerator generator = KeyGenerator.getInstance(" | ||
+ | generator.init(256); | ||
+ | |||
+ | Key key = generator.generateKey(); | ||
+ | |||
+ | |||
+ | byte[] keyBytes = key.getEncoded(); | ||
+ | String base64EncodedKey = Base64.encodeBase64URLSafeString(keyBytes); | ||
+ | System.out.println(String.format(" | ||
+ | } | ||
+ | } | ||
+ | </ |