使用 PHP 标准库(OpenSSL),无需额外依赖。需要 PHP >= 7.1(支持 GCM 模式)。完整代码#
使用说明#
1.
签名生成:使用 generateSignature() 静态方法,传入 HTTP 方法、路径、时间戳、随机数和原始 JSON body
2.
请求体加密:使用 encryptBody() 静态方法,传入原始 JSON、App ID 和 apiDataKey
3.
Query 字符串排序:使用 sortQueryString() 静态方法对查询参数排序
4.
生成 Nonce:使用 generateNonce() 静态方法生成随机字符串
注意事项#
签名中的 body 始终使用加密前的原始 JSON 字符串(即使设置了 X-Enc = aes-gcm-v1)
apiDataKey 必须是 Base64 编码的 32 字节密钥
Content-Type:加密时使用 application/octet-stream,明文时使用 application/json
PHP 的 openssl_encrypt() 在 GCM 模式下,$tag 参数会被填充为 16 字节的 authTag
PHP 7.1+ 才支持 GCM 模式的 AAD(关联数据)参数
PHP 版本要求#
PHP >= 7.1(支持 GCM 模式的 AAD 参数)
Modified at 2026-01-12 22:35:33