# 解决微信退款回调解密异常的问题

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.jarUS_export_policy.jar 覆盖掉服务器上 ${java_home}/jre/lib/security 下对应的两个文件,此时就可以无限制解密了。


上次更新: 2020-08-21 09:02:51(10 小时前)