Unsupported keysize or algorithm parameters. 혹은, Illegal key size or default parameters.
이는, 기본 JCE가 128비트만 지원해서 16바이트(128bit) 키만을 사용할 수 있는 상황에서 16바이트보다 큰 키를 사용했을 때 발생한다. 아래 패치를 통해 256비트까지 확장해서 32바이트 키를 사용할 수 있게 한다.
다음 파일을 받아서 $JAVA_HOME/jre/lib/security
의 파일을 덮어쓴다.
다음과 같이 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)); } }