相比 MD5,RSA 签名下您的私钥无需随请求参与运算摘要,即使请求被截获也无法伪造新签名,安全性更高。已在商户中心上传 RSA 公钥的商户即可使用。
1. 生成您自己的 RSA 2048 密钥对(openssl 示例):
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out merchant_private.pem openssl pkey -in merchant_private.pem -pubout -out merchant_public.pem
2. 登录商户中心 → 商户信息 → 粘贴 merchant_public.pem 内容保存;
3. 在同一页面复制平台公钥,用于验证平台发给您的异步通知签名。
1. 与 MD5 相同:过滤空值与 sign/sign_type,参数名 ASCII 升序,拼为 a=b&c=d(值不做 URL 编码);
2. 用您的私钥对该排序串做 RSA-SHA256(PKCS1v15) 签名,Base64 编码后作为 sign;
3. 请求携带 sign_type=RSA。
openssl dgst -sha256 -sign merchant_private.pem -out sig.bin sorted_string.txt sign=$(base64 -w 0 sig.bin)
平台异步通知会带 sign_type=RSA 与 sign(平台私钥签名)。验证方式:按相同排序规则构造串,用平台公钥做 RSA-SHA256 验签:
openssl dgst -sha256 -verify platform_public.pem -signature sig.bin sorted_string.txt # 输出 Verified OK 即签名有效
sign_type=RSA 的请求仍按 MD5 校验;清除商户公钥即整体回落 MD5。平台公钥可在商户中心-商户信息页随时复制。