[1125]AES加密报错:Illegal key size or default parameters

news/2024/10/21 6:05:28/

当遇到这个问题,首先查看你的jdk版本

C:\Users\enmonster>java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

jdk1.8.0_151这个版本报错Illegal key size or default parameters。

解决方案

直接升级你的jdk到1.8.0_180或1.8.0_251或1.8.0_311版本以上就行了

最近在使用AES方式进行加密,本来经果测试已经没有问题,但是在更新了密钥key之后,就出现了下列报错

控制台报错如下:

Exception in thread "main" java.lang.RuntimeException: Illegal key size or default parametersat com.cupdata.oam.cardapply.kit.AesKit.decrypt(AesKit.java:98)at com.cupdata.oam.cardapply.kit.AesKit.decrypt(AesKit.java:86)at com.cupdata.oam.cardapply.kit.AesKit.decryptToStr(AesKit.java:56)at com.cupdata.oam.cardapply.kit.AesKit.main(AesKit.java:194)
Caused by: java.security.InvalidKeyException: Illegal key size or default parametersat javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026)at javax.crypto.Cipher.implInit(Cipher.java:801)at javax.crypto.Cipher.chooseProvider(Cipher.java:864)at javax.crypto.Cipher.init(Cipher.java:1249)at javax.crypto.Cipher.init(Cipher.java:1186)at com.cupdata.oam.cardapply.kit.AesKit.decrypt(AesKit.java:94)... 3 more

网上搜索发现,由于key的变更(由原来的128位变更为256位),导致加密/解密的失败。
原来的密钥:lNQqkL1BfSwt2MKw
新的密钥: P_e-BhqDPP0yeMe8Ma43ZhhL6fqevuR8

之所以会出现这种问题,我们就要了解一个新的东西——JCE。在Java的核心类库中有一个JCE(Java Cryptography Extension),JCE是一组包,它们提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现,所以这个是实现加密解密的重要类库。

之所以会出现上述的报错问题:是因为AES在进行加密处理的时候并没有经果特殊的处理,但是在使用256位密钥加解密的时候,如果不进行特殊处理的话,往往会出现报“java.security.InvalidKeyException: Illegal key size or default parameters”的异常。

问题解决

通过上面描述,我们知道了问题的所在,下面开始解决。我们要做的就是更换JCE的库,该文件位置在你的JDK/jre/lib/security 目录下面,该目录下我们可以看到两个jar包:local_policy.jarUS_export_policy.jar,这两个jar包是jdk自带的。我们需要下载支持256位密钥加密的jar包。
image.png

备注:一定要下载与自己JDK版本一致的JCE,否则无效。

JDK8:

其对应的JCE下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

下载完后,解压,将其中的“local_policy.jar ”和“US_export_policy.jar”两个文件替换掉自己%JAVE_HOME%\jre\lib\security文件夹下对应的原文件(%JAVE_HOME%是自己电脑的Java路径)。

JDK7:

其对应的JCE下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

下载完后,解压,将其中的“local_policy.jar ”和“US_export_policy.jar”两个文件替换掉自己%JAVE_HOME%\jre\lib\security文件夹下对应的原文件(%JAVE_HOME%是自己电脑的Java路径)。

JDK6:

其对应的JCE下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

下载完后,解压,将其中的“local_policy.jar ”和“US_export_policy.jar”两个文件替换掉自己%JAVE_HOME%\jre\lib\security文件夹下对应的原文件(%JAVE_HOME%是自己电脑的Java路径)。

JDK5:

其对应的JCE下载地址为:http://download.csdn.net/detail/scs2043/4237335

下载完后,解压,将其中的“local_policy.jar ”和“US_export_policy.jar”两个文件替换掉自己%JAVE_HOME%\jre\lib\security文件夹下对应的原文件(%JAVE_HOME%是自己电脑的Java路径)。

扩展:

真实项目开发肯定在Linux中,前面我们知道Windos下更换JCE的方法,那么的Linux中怎么更换?如果你以为一样去替换jar包,那就大错特错了,因为JDK1.8以上的该目录下压根没有这两个JAR包。(如果真有,就直接替换)

image.png

针对这种情况,我们的解决方式为:vim 命令打开java.security文件,将注释掉的 #crypto.policy=unlimited 打开,然后保存即可

来源:https://blog.csdn.net/tomatocc/article/details/85096911


http://www.ppmy.cn/news/373616.html

相关文章

android加密电话,有信加密电话软件

有信加密电话免费版基于通讯录的免费电话软件,音质好,无漫游,零话费;支持有信用户间WiFi/3G下免费语音通话,每天签到领好礼即可网络电话免费拨打国内任意座机和手机,免费打电话还能隐藏手机号,不插手机卡都…

voipdiscount免费拨打全球电话(无需手机注册)

我测试过了的,能给我手机打通,我也给无题打了的感觉还不错。现推荐给大家! voipdiscount免费拨打全球电话(无需手机注册)通话效果极好到www.voipdiscount.com下载一个软件voipdiscount,申请一个用户(不需手…

106短信平台多少钱一条比较合理?

现如今,很多企业和商家都会通过106短信平台来宣传他们的产品和服务,而短信作为“第五媒体”,起效果是得到广泛的认可,不仅阅读度性强,到达率高,发送速度快,因此受到众多企业和商家的青睐。商家在…

无需注册,直接在网页拨打免费电话

无需注册,直接网页在线拨打免费5分钟的电话这是一个国外的网络电话,支持直接网页在线拨打,不需要下载软件,当然耳麦还是需要的,这是和手机回拨 电话是有区别的,我们一起来看看该免费网络电话的官方网站介绍…

Prometheus如何集成免费电话和短信告警

Prometheus是一个运维小伙伴都经常使用的开源系统监控和告警工具包,目前主要用于大规模的云端环境和容器化微服务(k8s)的监控。因具其有强大的多维度数据模型、可设置任意的多维标签、易于管理、多种可视化图形界面、高效等特点,收获了大量的用户。 虽然…

短信接收测试网站

短信接收测试网站 https://www.pdflibr.com/ http://www.z-sms.com/ https://www.receive-sms-online.info/ [随机推送] https://yunduanxin.net/ [国内] http://www.smszk.com/ [国外] http://receive-sms-online.com/ [国外] https://smsnumbersonline.com/ [国外] h…

免费电话

介绍:------------在任何不通话时,你的电话通过的是20伏电压。当某人打电话给你时,电压升至48伏并开始响玲。当你应答,电压会下降至10伏,电话局开始给打你电话的人计费。功能:--------黑盒子将你的电话上的…