问题描述:
微信在进行数据传输的时候,会进行加密,微信使用的 AES 加密使用的是 256位,Java 默认使用的解密包是 local_policy.jar
和 US_export_policy.jar
,但是这个默认的只支持 128位的解密(java 版本在 1.8.0_161之后就没有这个问题了,默认是支持)。我们的版本是 1.8.0_151
正好默认是只支持 128位的解密(其实不是不支持,只是默认配置的不支持)。
解决办法:
在jdk1.8.0_151/jre/lib/security/policy/
下有两个目录limited 和unlimited。
limited
目录是对解密有限制的包,只支持 128位ulimited
目录,是没有限制的目录。
我们在jdk1.8.0_151/jre/lib/security/
下的 java.security
文件中修改如下配置
crypto.policy=unlimited
也可以将jdk 版本升级至 1.8.0_161-b12
版本后,默认将采用无限制的加密算法。