平时对请求和响应参数进行AES加密都是采取128位加密的,今天对接的一个项目却是只支持256的,就做了下修改:
本地执行正常的,但是放上服务器后,结果就:
无情的抛了个异常
java.security.InvalidKeyException: Illegal key size or default parameters(key大小或默认参数异常)
查到资料发现原来JDK是不支持AES的256加密的,官方网站上提供了扩展包叫无限制JCE策略文件,用于覆盖原有的
两个jar包,就可以支持256加密了
下载网址:
JDK7的下载地址: https://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
解压出来后有这些文件:
这两个jar的替换路径为:
你的jdk所在路径/jre/lib/security,进去就能看到这两个jar包了。
注意:我本地加解密成功可以而服务器不行的问题,我服务器上的jdk版本是jdk1.8.0_112,而本地的为jdk 1.8.0_191,
本地版本进去后是连替换jar所在文件夹都变了:
你的jdk路径/jre\lib\security\policy,下面有limited和unlimited两个文件夹,都有这两个jar。
这里我推测是jdk1.8升级到后面的版本后已经解决了AES256加解密的问题。
进官网查这个版本的更新内容,并没有明说是解决了AES256问题,但有说修改了一些加密的问题,有兴趣的可以看下:
https://www.oracle.com/technetwork/java/javase/8u191-relnotes-5032181.html