java.security.invalidkeyexception: illegal key size or default parameters

解决原文摘自:Java实现AES加密,异常java.security.InvalidKeyException: Illegal key size 的解决_走过的足迹-CSDN博客Java实现AES加密,抛出异常如下:java.security.InvalidKeyException: Illegal key size代码参考 http://my.oschina.net/Jacker/blog/86383?fromerr=x3l5xL1a原因:Illegal key size or default parameters 是指密钥长https://blog.csdn.net/wangjunjun2008/article/details/50847426

Java实现AES加密,抛出异常如下:
java.security.InvalidKeyException: Illegal key size

代码参考 AES加密CBC模式兼容互通四种编程语言平台【PHP、Javascript、Java、C#】 - 尐桀 - OSCHINA - 中文开源技术交流社区

原因:

Illegal key size or default parameters 是指密钥长度受限制,

java运行时环境读到的是受限的policy文件。

policy文件位于${java_home}/jre/lib/security 目录下。

这种限制是因为美国对软件出口的控制。

解决办法:

去除该限制只需下载 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files,

覆盖上述目录下的对应jar文件(local_policy.jar, US_export_policy.jar)即可。

下载地址:
JDK6 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6
JDK7 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download
JDK8 JCE Unlimited Strength Jurisdiction Policy Files for JDK/JRE 8 Download
 

下载包的readme.txt 有安装说明,即替换

${jdk_home}/jre/lib/security

${jre_home}/lib/security

目录下的 local_policy.jar 和 US_export_policy.jar 文件。

参考 Java Security: Illegal key size or default parameters? - Stack Overflow

问题描述原文摘自:

AES的256位密钥加解密报 java.security.InvalidKeyException: Illegal key size or default parameters 异常的处理及处理工具_dafeige8的博客-CSDN博客AES的256位密钥加解密报“java.security.InvalidKeyException: Illegal key size or default parameters”异常的处理及处理工具https://blog.csdn.net/dafeige8/article/details/76019911

AES的256位密钥加解密报 java.security.InvalidKeyException: Illegal key size or default parameters 异常的处理及处理工具

-------------

一、出现的现象
为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行加密,然后等对方拿到后再解密使用。我们在使用AES加解密的时候,在遇到128位密钥加解密的时候,没有进行什么特殊处理;然而,在使用256位密钥加解密的时候,如果不进行特殊处理的话,往往会出现报“java.security.InvalidKeyException: Illegal key size or default parameters”的异常,那么这是为什么呢?今天我们来讲一讲。


二、为什么会出现这样的现象
我们做Java开发,或是Android开发,都会先在电脑上安装JDK(Java Development Kit) 并配置环境变量,JDK也就是 Java 语言的软件开发工具包,JDK中包含有JRE(Java Runtime Environment,即:Java运行环境),JRE中包括Java虚拟机(Java Virtual Machine)、Java核心类库和支持文件,而我们今天要说的主角就在Java的核心类库中。在Java的核心类库中有一个JCE(Java Cryptography Extension),JCE是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现,所以这个是实现加密解密的重要类库。

在我们安装的JRE目录下有这样一个文件夹:%JAVE_HOME%\jre\lib\security(%JAVE_HOME%是自己电脑的Java路径,一版默认是:C:\Program Files\Java,具体看自己当时安装JDK和JRE时选择的路径是什么),其中包含有两个.jar文件:“local_policy.jar ”和“US_export_policy.jar”,也就是我们平时说的jar包,再通俗一点说就是Java中包含的类库(Sun公司的程序大牛封装的类库,供使用Java开发的程序员使用),这两个jar包就是我们JCE中的核心类库了。JRE中自带的“local_policy.jar ”和“US_export_policy.jar”是支持128位密钥的加密算法,而当我们要使用256位密钥算法的时候,已经超出它的范围,无法支持,所以才会报:“java.security.InvalidKeyException: Illegal key size or default parameters”的异常。那么我们怎么解决呢?

三、怎么解决这个异常
这个问题oracle公司早就替我们想到了(脑补一下,别懵了:Java是Sun开发的一种编程语言,2009年oracle宣布收购Sun公司,从此两家就是一家了),所以在oracle官网给我们提供有Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files X(即: Java加密扩展(JCE)无限强度权限政策文件),也就是所谓的JCE的无敌加强版,后面的“X”代表的是对应的JDK版本。该文件中只包含了 “local_policy.jar ”和“US_export_policy.jar”这两个jar包,我们只需要拿这两个jar包替换掉自己JRE中的对应jar包就行了。

注意:需要特别注意的一点就是,替换的JCE版本要和自己电脑上的JDK版本一一对应。比如说:自己电脑上安装的是JDK 8,则需要安装与之对应的JCE版本Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8
————————————————
版权声明:本文为CSDN博主「Run-ning」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dafeige8/article/details/76019911

 -- 以下是我解决的, 也简单,就是替换以下。

 

 首先找到自己项目用的jdk ,位置

然后下载对应的jar包

我是把这两个里面的jar包都给替换了 

----------我是出了这个bug 然后去找资料,最后整理了一下放在一起了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silence丶你的名字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值