微信支付调起失败或者llegal key size解密大坑(已解决)

第一个坑,调起微信支付失败的原因之一

第二个大坑,Illegal key size 报错问题,你的代码是没错的,jdk的问题


此篇文章是承接微信支付下面这篇文章

微信V3APP支付2022,全网最新+踩坑(已实现)

第一个坑,调起微信支付失败的原因之一

返回的参数一定要小写啊,特别是timestamp ,能小写劲量小写,否则不能调起微信支付(即弹到微信里支付)

官方的调起支付参数都是小写

JSONObject object = WechatPayUtils.WxTuneUp(prepay_id, WechatPayConfig.appId);
  JSONObject jsonObject = new JSONObject();
        jsonObject.put("appid", appId);
        jsonObject.put("partnerid", WechatPayConfig.mchId);
        jsonObject.put("prepayid", prepay_id);
        jsonObject.put("package", WechatPayConfig.PACKAGE);
        jsonObject.put("noncestr", noncestr);
        jsonObject.put("timestamp", time);
        jsonObject.put("signtype", "RSA");
        jsonObject.put("sign", packageSign);
 

第二个大坑,Illegal key size 报错问题,你的代码是没错的,jdk的问题

javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1029)
javax.crypto.Cipher.implInit(Cipher.java:795)
javax.crypto.Cipher.chooseProvider(Cipher.java:854)
javax.crypto.Cipher.init(Cipher.java:1374)
javax.crypto.Cipher.init(Cipher.java:1308)
com.focustech.common.codec.encrypter.AES256Encrypter.cipher(AES256Encrypter.java:37)
com.focustech.common.codec.encrypter.AES256Encrypter.encrypt(AES256Encrypter.java:45)

异常原因:如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于jdk/jre/lib/security,

解决办法也很简单:

替换jdk 与jre下两个jar包:local_policy.jar和 US_export_policy.jar即可。

一般下载jdk的时候,已经有jre了,所以一般就只用改 jdk/jre/lib/security这个目录的两个jar包就好了。 


 

 官方网站提供了JCE无限制权限策略文件的下载:
请根据JDK版本去官方下载JCE无限制权限策略文件
https://www.oracle.com/technetwork/java/javase/downloads/jce-all-download-5170447.html
jdk 5:
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR
jdk6:
http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
jdk7:
http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
jdk8:
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件。

但是下载需要钱,我这准备了1.8jdk的,如果需要其他我可以帮你找。下面是1.8jdk的

链接:https://pan.baidu.com/s/1BEx-Q4Gr_TjwG9uFKhO6pw 
提取码:6666


 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"llegal base64 character 20"是一个错误的提示,表示在解码base64字符串时遇到了非法字符20。根据引用中提到的,如果使用Java JDK的Base64进行解码,需要注意如果是url地址栏传参,可能需要进行UrlDecode一次。否则,base64中的加号" "会被替换成空格,导致解码失败。所以,解决这个问题的方法是使用URLDecoder对base64字符串进行解码,然后再使用Base64进行解码。例如,可以使用以下代码来解决这个问题: String decodedString = URLDecoder.decode(base64String, "UTF-8"); byte[] decodedBytes = Base64.getDecoder().decode(decodedString); String decodedResult = new String(decodedBytes, "UTF-8"); 这样就可以正确解码含有非法字符20的base64字符串了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [自学Android开发 Java和Android SDK的Base64](https://blog.csdn.net/Ym_quiet/article/details/123835335)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Illegal base64 character 20](https://blog.csdn.net/qingqingxiaocao1989/article/details/123580931)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值