加密解密时,报异常 java.security.InvalidKeyException: Illegal key size or default parameters的解决办法

1、异常

执行代码加密解密在此处报错了。

 Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");

异常信息是

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

2、原因

因为美国的出口限制,Sun通过权限文件(local_policy.jar、US_export_policy.jar)做了相应限制。因此存在一些问题:
●密钥长度上不能满足需求(如:java.security.InvalidKeyException: Illegal key size or default parameters);
●部分算法未能支持,如MD4、SHA-224等算法;
●API使用起来还不是很方便;一些常用的进制转换辅助工具未能提供,如Base64编码转换、十六进制编码转换等工具。

Oracle在其官方网站上提供了无政策限制权限文件(Unlimited Strength Jurisdiction Policy Files),我们只需要将其部署在JRE环境中,就可以解决限制问题。

3、下载地址:

1、Java 5.0 无政策限制文件
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
2、Java 6 无政策限制文件
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
3、Java 7 无政策限制文件
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
4、其他版本 无政策限制文件
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html

处理办法: 在官方网站下载JCE无限制权限策略文件

JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

根据自己使用的JDK,选择相应的链接下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt。如图所示:

在这里插入图片描述

4、更新本地 jar

4.1、jdk1.7 更新

将从oracle下载的 local_policy.jar、US_export_policy.jar 复制并覆盖C:\Program Files\java\jdk1.7.0_67\jre\lib\security\
在这里插入图片描述

4.2、 jre1.7 更新

将从oracle下载的 local_policy.jar、US_export_policy.jar 复制并覆盖到 C:\Program Files\java\jre7\lib\security\
在这里插入图片描述

4.3、更新 eclipse 内置 JavaSE-1.7的 lib

如果项目使用的是 eclilpse 内置的JRE,如图所示:
在这里插入图片描述
则要更新内置的 eclilpse 内置的JRE。

操作步骤:
window -> Preferences ->
在这里插入图片描述

找对内置的JDK,点击 Edit

在这里插入图片描述

得到内置的JDK路径:
C:\Users\Administrator\AppData\Local\MyEclipse Professional 2014\binary\com.sun.java.jdk7.win32.x86_64_1.7.0.u45 ,进入目录,如图所示:

在这里插入图片描述

进入 \jre\lib\security\ 目录,如图所示
在这里插入图片描述

将从oracle下载的 local_policy.jar、US_export_policy.jar 复制并覆盖此处。

猜你喜欢

转载自blog.csdn.net/xiaojin21cen/article/details/85233645