목차

Java JCE(Java Cryptography Extension)

AES

AES 키 등록시 다음과 같은 오류 발생

Unsupported keysize or algorithm parameters.
혹은,
Illegal key size or default parameters.

이는, 기본 JCE가 128비트만 지원해서 16바이트(128bit) 키만을 사용할 수 있는 상황에서 16바이트보다 큰 키를 사용했을 때 발생한다. 아래 패치를 통해 256비트까지 확장해서 32바이트 키를 사용할 수 있게 한다.

다음 파일을 받아서 $JAVA_HOME/jre/lib/security의 파일을 덮어쓴다.

AES 키 생성

다음과 같이 AES 256bit 키를 생성하였다. 128bit로 생성하려면 256 대신 128을 사용한다. Apache Commons Codec의 Base64가 필요하다.

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("AES");
		generator.init(256);
 
		Key key = generator.generateKey();
 
 
		byte[] keyBytes = key.getEncoded();
		String base64EncodedKey = Base64.encodeBase64URLSafeString(keyBytes);
		System.out.println(String.format("Key : %s Length : %d", base64EncodedKey, keyBytes.length));
	}
}