使用AES加密时,当密钥大于128时,代码会抛出Java.security.InvalidKeyException: Illegal key size or default parameters
Illegal key size or default parameters是指密钥长度是受限制的,java运行时环境读到的是受限的policy文件。文件位于${java_home}/jre/lib/security
这种限制是因为美国对软件出口的控制。
解决办法:
去掉这种限制需要下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files.网址如下。
下载包的readme.txt 有安装说明。就是替换${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar
注意你的jdk 不然会出现这个问题
1. failed to load the jni shared library jre bin server jvm.dll
解决:这个主要是eclipse的版本和安装的jdk版本不相同。
2. java.lang.SecurityException: The jurisdiction policy files are not signed by a trusted signer!
解决:主要是因为加密文件的版本和jdk的版本加密文件不相同。查看主类(local_policy.jar,US_export_policy.jar)和jdk的加密文件的版本不相同。
目录C:\Program Files\Java\jdk1.6.0_45\jre\lib\security\下的local_policy.jar,US_export_policy.jar
与 目录C:\Program Files\Java\jre6\lib\security\下的local_policy.jar,US_export_policy.jar版本不一样
JCE8: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
JCE7: http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/jce-7-download-432124.html
JCE6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
* <strong>注意:</strong> * <p> * 当密钥长度(KEY_SIZE)大于128时,代码会抛出Java.security. InvalidKeyException: Illegal key * size or default parameters * </p> * * <p> * 原因:这种限制是因为美国对软件出口的控制 * </p> * * <p> * 解决办法:替换${java_home}/jre/lib/security/ * 下面的local_policy.jar和US_export_policy.jar * </p> * * <p> * jar包下载地址: * "http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html" * </p>