评论

微信支付退款解密坑

微信开发人员是个人才啊,,,白白浪费我1天时间

微信支付开人员是不是有毛病,弄了这么一个大坑给我们,也不知道为什么微信支付退款这个步骤需要解密,为什么支付不需要解密?(难道退款会被冒充,支付就不会了?)解密也就算了,弄这么复杂干什么啊,弄一个技术限制的解密方法,还是开发的这个功能的人脑子有毛病啊,真他妈啥毕啊。

微信支付退款解密具体方法如下:

String descrypt(String reqInfo) {
    byte[] reqInfoB = Base64.decodeBase64(reqInfo);
    String key="微信key";
    String key_ = DigestUtils.md5Hex(key).toLowerCase();

    if (Security.getProvider("BC") == null){
        Security.addProvider(new BouncyCastleProvider());
    }
    Cipher cipher;
    try {
        cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
    }catch ( NoSuchAlgorithmException |NoSuchProviderException|NoSuchPaddingException e){
        e.printStackTrace();
        throw new RuntimeException("秘密获取失败");
    }
    SecretKeySpec secretKeySpec = new SecretKeySpec(key_.getBytes(), "AES");
    try {
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
    }catch (InvalidKeyException ie){
        ie.printStackTrace();
        throw new RuntimeException("秘密初始化失败");
    }
    try {
        return new String(cipher.doFinal(reqInfoB));
    }catch (BadPaddingException| IllegalBlockSizeException  ie){
        ie.printStackTrace();
        throw new RuntimeException("秘密初始化失败");
    }
}

上述过程之后在本地运行没问题了,但是放到 linux服务器就会解析失败:

  java.security.InvalidKeyException: Illegal key size or default parameters(有可能会报这个错误,也有可能什么都不会报)

JAVA实现“AES/ECB/PKCS7Padding”对称加解密,尤其是 AES256的加解密需要注意两点:

  1. 技术出口限制,国内的JDK 默认不支持;
  2. JDK默认不支持PKCS7Padding填充模式,需借助第三方提供者。

解决出口限制问题,下载以下两个包(local_policy.jar,US_export_policy.jar)替换jdk安装路径下: jre\lib\security 的同名文件

  5.1.下载

    需要注意的是:替换的jar包版本需要与jre版本一致,各个版本包连接

      jdk8:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

      jdk7:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

      jdk6:http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

      jdk5:http://download.csdn.net/detail/scs2043/4237335

  5.2.替换路径

    %JAVE_HOME%\jre\lib\security


最后,微信开人员真是牛啊,怕我们太好写程序了,故意弄一点坑给我们跳啊!!!!!!


最后一次编辑于  2020-11-05  
点赞 3
收藏
评论

3 个评论

  • .A军-Mr.Chen
    .A军-Mr.Chen
    2021-04-29

    不可能都去改jdk的jar包吧,20多个服务器呢,大佬给吱吱招


    2021-04-29
    赞同
    回复
  • Bon
    Bon
    2021-02-24

    这个解密设定真的狗。。。。我也被折腾了一天,幸亏搜到这位老哥的帖子。

    2021-02-24
    赞同
    回复
  • 八英里-
    八英里-
    2020-11-06

    微信 支付宝 等支付方式都可以帮忙申请接入哦 我们属于微信 支付宝的服务商 也和很多持牌三方支付公司和银行合作的 需要的朋友欢迎咨询 遇到任何支付限额 关闭交易权限问题也可以咨询 赵18320304957

    2020-11-06
    赞同
    回复
登录 后发表内容