收藏
回答

微信支付通知AEAD_AES_256_GCM解密错误

我用的是官方的.net解密程序:网址:https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/zheng-shu-he-hui-tiao-bao-wen-jie-mi

程序:public static string AesGcmDecrypt(string associatedData, string nonce, string ciphertext)

        {

            GcmBlockCipher gcmBlockCipher = new GcmBlockCipher(new AesEngine());

            AeadParameters aeadParameters = new AeadParameters(

                new KeyParameter(Encoding.UTF8.GetBytes(AES_KEY)),

                128,

                Encoding.UTF8.GetBytes(nonce),

                Encoding.UTF8.GetBytes(associatedData));

            gcmBlockCipher.Init(false, aeadParameters);


            byte[] data = Convert.FromBase64String(ciphertext);

            byte[] plaintext = new byte[gcmBlockCipher.GetOutputSize(data.Length)];

            int length = gcmBlockCipher.ProcessBytes(data, 0, data.Length, plaintext, 0);

            gcmBlockCipher.DoFinal(plaintext, length);

            return Encoding.UTF8.GetString(plaintext);

        }


结果在gcmBlockCipher.DoFinal(plaintext, length);这句出现错误,提示为:

Org.BouncyCastle.Crypto.InvalidCipherTextException

  HResult=0x80131500

  Message=mac check in GCM failed


请问如何解决这个问题?


回答关注问题邀请回答
收藏
登录 后发表内容