如何解密证书和回调报文

更新时间:2023.04.28

为了保证安全性,微信支付在回调通知和平台证书下载接口中,对关键信息进行了AES-256-GCM加密,商户收到报文后,要解密出明文,APIv3密钥是解密时使用的对称密钥。本章节详细介绍了加密报文的格式,以及如何进行解密。

我们提供了微信支付API v3官方SDK(目前包含Java (opens new window)PHP (opens new window)Go (opens new window)三种语言版本),使用官方 SDK 调用微信支付接口,无需关心签名生成和验证,接入更方便。

# 1. 加密报文格式

AES-GCM是一种NIST标准的认证加密 (opens new window)算法, 是一种能够同时保证数据的保密性、 完整性和真实性的一种加密模式。它最广泛的应用是在TLS中。

证书和回调报文使用的加密密钥为APIv3密钥

对于加密的数据,我们使用了一个独立的JSON对象来表示。为了方便阅读,示例做了Pretty格式化,并加入了注释。

1{
2 "original_type": "transaction", // 加密前的对象类型
3 "algorithm": "AEAD_AES_256_GCM", // 加密算法
4
5 // Base64编码后的密文
6 "ciphertext": "...",
7 // 加密使用的随机串初始化向量)
8 "nonce": "...",
9 // 附加数据包(可能为空)
10 "associated_data": ""
11}

注意:加密的随机串,跟签名时使用的随机串没有任何关系,是不一样的。

# 2. 解密

算法接口的细节,可以参考rfc5116 (opens new window)

大部分编程语言(较新版本)都支持了AEAD_AES_256_GCM。开发者可以参考下列的示例,了解如何使用您的编程语言实现解密。

示例代码
更多技术问题
技术咨询
反馈
咨询
目录