123456789101112131415161718192021222324252627282930313233 |
- // 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
- }
|