fuyu198478:
原文有16字节的tag没有处理。
export function aedaAes256Gcm(ciphertext, nonce, associated) {
let key = wechat_config.apiV3Key
let algorithm = 'aes-256-gcm'
let keysBuffer = Buffer.from(key, 'binary')
let ivBuffer = Buffer.from(nonce, 'binary')
let decipher = crypto.createDecipheriv(algorithm, keysBuffer, ivBuffer)
let ciphertextBuffer = Buffer.from(ciphertext, 'base64')
let text = Buffer.from(ciphertextBuffer, 'binary')
text = text.slice(0, text.length - 16)
decipher.setAutoPadding(true)
const authTag = ciphertextBuffer.slice(-16)
decipher.setAuthTag(authTag)
let associatedBuff = Buffer.from(associated)
decipher.setAAD(associatedBuff)
var decrypted = decipher.update(text, 'base64', 'utf-8') + decipher.final('utf-8')
return decrypted
}