【小坑速记】JDK加解密Key长度限制

栏目: Java · 发布时间: 6年前

内容简介:由于出口限制等方面的原因,在受限情况下如果使用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.jarlocal_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版本替换文件的下载地址:

US_export_policy.jarlocal_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个文件夹: limitedunlimited ,里面的文件分别对应有限制的Policy和无限制的Policy,有2种方式可以通过以下方式放开限制:

  • 修改JDK配置

    $JAVA_HOME/jre/lib/security/java.security 文件中的 crypto.policy 配置修改为 unlimited

  • 运行时修改

    Security.setProperty("crypto.policy", "unlimited");


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Art of Computer Programming, Volume 3

The Art of Computer Programming, Volume 3

Donald E. Knuth / Addison-Wesley Professional / 1998-05-04 / USD 74.99

Finally, after a wait of more than thirty-five years, the first part of Volume 4 is at last ready for publication. Check out the boxed set that brings together Volumes 1 - 4A in one elegant case, and ......一起来看看 《The Art of Computer Programming, Volume 3》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码