评论

分享微信支付回调解密提示:Tag mismatch

微信支付回调解密提示:Tag mismatch

javax.crypto.AEADBadTagException: Tag mismatch!

        at java.base/com.sun.crypto.provider.GaloisCounterMode$GCMDecrypt.doFinal(GaloisCounterMode.java:1395) ~[na:na]

        at java.base/com.sun.crypto.provider.GaloisCounterMode.engineDoFinal(GaloisCounterMode.java:406) ~[na:na]

        at java.base/javax.crypto.Cipher.doFinal(Cipher.java:2205) ~[na:na]


最近对接支付遇到这个问题,分享一下我的解决办法:

1,很多人提到的,确认你的api密钥正确,其实如果你可以正常下单,那应该是正确的了,因为下单的时候也用到密钥,如果真的是密钥错误那应该是无法下单。

2,我就是卡在这里

//更改前
JSONObject resource = jsonObject.getJSONObject("resource");
AesUtil aesUtil = new AesUtil("你的密钥".getBytes());
String s = aesUtil.decryptToString(
        resource.getString("associated_data").getBytes(),
        resource.getString("nonce").getBytes(),
        resource.getString("ciphertext")
);



//更改后
JSONObject resource = jsonObject.getJSONObject("resource");
AesUtil aesUtil = new AesUtil("你的密钥".getBytes(StandardCharsets.UTF_8));
String s = aesUtil.decryptToString(
        resource.getString("associated_data").getBytes(StandardCharsets.UTF_8),
        resource.getString("nonce").getBytes(StandardCharsets.UTF_8),
        resource.getString("ciphertext")
);

没错,标明使用utf-8字符集进行转换,问题就解决了。

最后一次编辑于  2023-11-15  
点赞 1
收藏
评论

1 个评论

  • 小孟童鞋
    小孟童鞋
    2023-10-27

    感谢感谢,我也是这个错误,按照博主的方式已经解决了:

    原代码:

    修改之后代码,以及正确的解析数据:

    2023-10-27
    赞同
    回复 1
    • 谢宇
      谢宇
      2023-11-16
      哈哈,继续一直踩坑
      2023-11-16
      回复
登录 后发表内容