收藏
回答

关于微信支付退款req_info字段解密问题

退款成功后退款通知回调req_info字段是加密的  现在通过文档进行base64解码     MD5加密之后进行 key*对加密串B做AES-256-ECB解密(PKCS7Padding)这一步的时候一直报 javax.crypto.BadPaddingException: pad block corrupted 这个错   百度了一堆方法尝试玩还是报这个错   有没有大佬有解决方案的  demo也只有PHP的  也是无语了

最后一次编辑于  03-19  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • 微信支付技术助手
    微信支付技术助手
    03-19

    您好,请参考:

    初始化:


     Security.addProvider(new BouncyCastleProvider());

     key = new SecretKeySpec(keyBytes, KEY_ALGORITHM);

    // 初始化cipher

     cipher = Cipher.getInstance(algorithmStr, "BC");


    加密:


     cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(ivStr.getBytes("UTF-8")));

     byte[] enbytes = cipher.doFinal(contentStr.getBytes("UTF-8"));

     return new BASE64Encoder().encode(enbytes)


    解密:


     byte[] contentBye = new BASE64Decoder().decodeBuffer(base64Str)

     cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(ivStr.getBytes("UTF-8")));

     byte[] dedata = cipher.doFinal(contentBye);

     return new String(dedata, "UTF-8");


    03-19
    赞同
    回复 9
    • ZXK^O^😄
      ZXK^O^😄
      03-19

      ivStr 可以告知一下这个字段是什么意思吗

      03-19
      回复
    • ZXK^O^😄
      ZXK^O^😄
      03-19回复ZXK^O^😄

      给的方法也尝试过了  还是不行啊  还是报: pad block corrupted 这个错    出了这个偏移量的数据是百度搜到的以外 其他的都是一样的   能给个回复么

      03-19
      回复
    • 微信支付技术助手
      微信支付技术助手
      03-19回复ZXK^O^😄

      您好,上面的仅供参考,这个需要开发者自己开发进行解决。

      03-19
      回复
    • ZXK^O^😄
      ZXK^O^😄
      03-19回复微信支付技术助手

      终于解决了  你给的demo有问题啊  key = new SecretKeySpec(keyBytes, KEY_ALGORITHM);   这里面你传的KEY_ALGORITHM   下面的初始化 cipher = Cipher.getInstance(algorithmStr, "BC"); 也要传入KEY_ALGORITHM   这个值  而不是你发的这两个。。。。

      03-19
      1
      回复
    • 微信支付技术助手
      微信支付技术助手
      03-19回复ZXK^O^😄

      您好,我发的仅供参考,哈哈

      03-19
      回复
    查看更多(4)