《实战开发》AES加密报错:Illegal key size or default parameters
最近在使用AES方式进行加密,本来经测试已经没有问题,但是在更新了密钥key之后,就出现了下列报错。
控制台报错如下:
网上搜索发现,由于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.jar
,US_export_policy.jar
,这两个jar包是jdk自带的。我们需要下载支持256位密钥加密的jar包。
备注:一定要下载与自己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包。(如果真有,就直接替换)
针对这种情况,我们的解决方式为:vim 命令打开
java.security
文件,将注释掉的#crypto.policy=unlimited
打开,然后保存即可
参考文章:
https://blog.csdn.net/tomatocc/article/details/85096911?utm_medium=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-blogcommendfrombaidu-1.nonecas