外观
签名与解密
约 377 字大约 1 分钟
指南快速开始
2026-10-19
贵司请求我司时,对业务数据做 RSA 签名,我司验签。我司把结果返回给贵司、或回调贵司时,对业务数据做 RSA + AES 加密,贵司用私钥解密。
基本约定
- 参与签名的是请求中的
body,不是整个报文。 - 所有参数名按 ASCII 码从小到大排序(字典序),参数名区分大小写。
- 参数值为空(
null)不参与签名。 - 私钥按 PKCS8 编码,签名算法为
SHA256withRSA,结果做 Base64。
签名步骤
第一步
取
body中非空参数,按参数名 ASCII 码从小到大排序后,转为 JSON 字符串,得到待签名数据。例如
body为:{ "transactionId": "sd98214163746", "orderNo": "31886131315641561320532", "userPhone": "13700000000", "equityCode": "ASS205645", "ext": "{\"b\":\"1\",\"a\":\"1\"}" }待签名字符串为:
{"equityCode":"ASS205645","ext":"{\"b\":\"1\",\"a\":\"1\"}","orderNo":"31886131315641561320532","transactionId":"sd98214163746","userPhone":"13700000000"}第二步
使用我司提供的私钥做 Base64 解码,按 PKCS8 产生私钥对象,再用
SHA256withRSA对待签名数据签名,签名结果做 Base64,作为报文中的sign。
解密步骤
我司返回和回调中的 data 为加密结构,包含 secret 与 data。
第一步
将
secret做 Base64 解码,使用私钥按 RSA 解密,得到 AES 密钥。第二步
将
data做 Base64 解码,使用上一步得到的 AES 密钥解密,得到业务数据 JSON。
代码示例:SignUtil.java