内容简介:由于出口限制等方面的原因,在受限情况下如果使用256位的key进行加解密,会报因此如果使用的稍旧的JDK版本,需要支持256位key的加解密根据JDK版本有以下方式,
由于出口限制等方面的原因, JDK 8u151
之前的版本限制了一些加密算法的key最大长度。 JDK 8u151
后提供了不限制的Policy可以通过修改配置或运行时来配置, JDK 8u161
之后默认使用了不限制的Policy。
在受限情况下如果使用256位的key进行加解密,会报 InvalidKeyException: Illegal key size
,如下:
java.security.InvalidKeyException: Illegal key size at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1038) at javax.crypto.Cipher.implInit(Cipher.java:804) at javax.crypto.Cipher.chooseProvider(Cipher.java:863) at javax.crypto.Cipher.init(Cipher.java:1395) at javax.crypto.Cipher.init(Cipher.java:1326)
因此如果使用的稍旧的JDK版本,需要支持256位key的加解密根据JDK版本有以下方式,
JDK 8u151之前的版本
需要替换 $JAVA_HOME/jre/lib/security
下面中 US_export_policy.jar
和 local_policy.jar
两个文件,这2个文件中原始的内容如下,限制了各种算法的最大key的位数。
// local_policy.jar中内容
grant {
permission javax.crypto.CryptoPermission "DES", 64;
permission javax.crypto.CryptoPermission "DESede", *;
permission javax.crypto.CryptoPermission "RC2", 128,
"javax.crypto.spec.RC2ParameterSpec", 128;
permission javax.crypto.CryptoPermission "RC4", 128;
permission javax.crypto.CryptoPermission "RC5", 128,
"javax.crypto.spec.RC5ParameterSpec", *, 12, *;
permission javax.crypto.CryptoPermission "RSA", *;
permission javax.crypto.CryptoPermission *, 128;
};
// US_export_policy.jar中内容
grant {
// There is no restriction to any algorithms.
permission javax.crypto.CryptoAllPermission;
};
不同jdk版本替换文件的下载地址:
- java6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
- java7: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
- java8: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
把 US_export_policy.jar
和 local_policy.jar
两个文件复制到 $JAVA_HOME/jre/lib/security
下面。jar包中内容如下:
// US_export_policy.jar 和 local_policy.jar 都为以下内容
grant {
// There is no restriction to any algorithms.
permission javax.crypto.CryptoAllPermission;
};
JDK 8u151到JDK 8u161之间的版本
JDK 8u151
之后的版本, $JAVA_HOME/jre/lib/security/policy
下有2个文件夹: limited
和 unlimited
,里面的文件分别对应有限制的Policy和无限制的Policy,有2种方式可以通过以下方式放开限制:
-
修改JDK配置
把
$JAVA_HOME/jre/lib/security/java.security文件中的crypto.policy配置修改为unlimited -
运行时修改
Security.setProperty("crypto.policy", "unlimited");
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beautiful Code
Greg Wilson、Andy Oram / O'Reilly Media / 2007-7-6 / GBP 35.99
In this unique work, leading computer scientists discuss how they found unusual, carefully designed solutions to difficult problems. This book lets the reader look over the shoulder of major coding an......一起来看看 《Beautiful Code》 这本书的介绍吧!