在启动项目后,用微信访问,报错:java.security.InvalidKeyException:illegal Key Size

在启动项目后,用微信访问,报错:java.security.InvalidKeyException:illegal Key Size_第1张图片

通过跟踪代码,发现是加密问题!

try {
            // 设置解密模式为AES的CBC模式
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec key_spec = new SecretKeySpec(aesKey, "AES");
            IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(aesKey, 0, 

16));
            cipher.init(Cipher.DECRYPT_MODE, key_spec, iv);

            // 使用BASE64对密文进行解码
            byte[] encrypted = Base64.decodeBase64(text);

            // 解密
            original = cipher.doFinal(encrypted);
        } catch (Exception e) {
            e.printStackTrace();
            throw new AesException(AesException.DecryptAESError);
        }

就是cipher.init(Cipher.DECRYPT_MODE, key_spec, iv);这句捕获到异常:java.security.InvalidKeyException:illegal Key Size
这是因为用到了jdk sercurity, 而jdk sercurity 使用的jar包

$JAVA_HOME/lib/security/local_policy.jar 
$JAVA_HOME/lib/security/US_export_policy.jar

中有对技术出口的限制,加密只有128bit,而没有限制的则有256bit.

解决办法:

1. 下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files

我是在这个路径就是这个路径下载的!
下载的版本是:1.4.2

2. 下载jce_policy_X_X_X.zip后解压,放入$JAVA_HOME/lib/security/目录下替换原来的jar包。

3. 重启服务

。。。。。。。。

结果没想到,又有了另外一个问题?

Could not initialize class javax.crypto.JceSecurity

解决方法:

1.下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download
我下载的是:就是这个路径

2.下载jUnlimitedJCEPolicyJDK7.zip后解压,放入$JAVA_HOME/lib/security/目录下替换原来的jar包。

3.重启服务

总算是可以运行了!感谢度娘!

你可能感兴趣的:(加密,解密,微信)