// Copyright 2021 Tencent Inc. All rights reserved. package utils import ( "crypto/aes" "crypto/cipher" "encoding/base64" ) // DecryptAES256GCM 使用 AEAD_AES_256_GCM 算法进行解密 // // 你可以使用此算法完成微信支付平台证书和回调报文解密,详见: // https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/zheng-shu-he-hui-tiao-bao-wen-jie-mi func DecryptAES256GCM(aesKey, associatedData, nonce, ciphertext string) (plaintext string, err error) { decodedCiphertext, err := base64.StdEncoding.DecodeString(ciphertext) if err != nil { return "", err } c, err := aes.NewCipher([]byte(aesKey)) if err != nil { return "", err } gcm, err := cipher.NewGCM(c) if err != nil { return "", err } dataBytes, err := gcm.Open(nil, []byte(nonce), decodedCiphertext, []byte(associatedData)) if err != nil { return "", err } return string(dataBytes), nil }