通过跟踪代码,发现是加密问题!
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.重启服务
总算是可以运行了!感谢度娘!