# 解决微信退款回调解密异常的问题
阅读量 loading
在做微信支付开发的时候会涉及到微信退款功能,当发起微信退款之后,如果微信受理成功会回调我们自己写的一个接口,在这个接口中,微信会返回一段 xml
字符串,在 <req_info>
这个节点中会包含一个 Base64
加密的字符串,需要我们做 base64
解码操作,解码后还需要做 AES/ECB/PKCS5Padding
的解密操作,在这个解密的过程中会抛出这样一个异常;
java.security.InvalidKeyException: Illegal key size or default parameters
1
这是因为密钥长度受限了,java
在运行时环境读到的是受限的 policy
文件。文件位于服务器 ${java_home}/jre/lib/security
下,这种限制是因为美国对软件出口的控制,此时我们需要下载 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files
,下载的文件版本必须和 jdk
版本对应。
比如我们使用的是 jdk 1.8
,那么就需要下载对应的 jce_policy-8
,去Oracle官网下载,这里给出下载地址:jce8下载 ,下载好后解压,将里面的 local_policy.jar
和 US_export_policy.jar
覆盖掉服务器上 ${java_home}/jre/lib/security
下对应的两个文件,此时就可以无限制解密了。