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

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

内容简介:由于出口限制等方面的原因,在受限情况下如果使用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");


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

查看所有标签

猜你喜欢:

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

群体的智慧

群体的智慧

[美] 詹姆斯·索罗维基 / 王宝泉 / 中信出版社 / 2010-10 / 33.00元

《纽约时报》榜首畅销书,《商业周刊》《福布斯》杂志最佳商业图书 21世纪商务人士必读书,了解群体智慧时代的决策模式 告诉我们如何过日子、如何选择领导人、如何做生意以及如何思考这个世界 我们当中的大多数人,不论是选民还是投资者,是客户还是经理人,似乎都相信宝贵的知识掌握在少数人手中,认为精英们做出的决策更加聪明,很少有人相信“乌合之众”也能像专家那样做得如此出色。 但《纽约客......一起来看看 《群体的智慧》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具