Illegal key size or default parameters


示例代码
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom()); 

 

init 第一个参数 keysize(密钥长度) 可选值有 128,192, 256
但是,默认情况下,只能使用128.
如果使用192,或者256,则会抛出如下异常:
java.security.InvalidKeyException: Illegal key size or default parameters

 

原因是:
由于某种原因,Sun通过权限文件(local_policy.jar、US_export_policy.jar)对密钥长度做了限制,默认情况下只能使用128位的密钥。
如果需要使用192和256长度的密钥,需要下载无限制文件(替换掉 jre 下默认的限制文件)

 

解决办法
下载地址:
      ●Java 6 无政策限制文件
      http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
      ●Java 7 无政策限制文件     
      http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
     
将下载的压缩包(如UnlimitedJCEPolicyJDK7.zip)解压,将解压出的文件 local_policy.jar、US_export_policy.jar 放到 $JAVA_HOME$\jre7\lib\security 目录下(替换掉原来的)即可。

 

 

 

 

 

 

 

 

你可能感兴趣的:(java)