签名算法
签名要素
元素Key | 说明 |
---|---|
Nonce | 随机数。GUID格式,每次调用接口都应该新生成。 |
Timestamp | 当前UTC时间时间戳。13位毫秒级。 |
App | 授权方颁发的身份认证信息中的AppKey. 调用不同Application的数据App值应该随之发生变化。 |
Security | 授权方颁发的身份认证信息中的SecurityKey. 调用不同Application的数据Security值应该随之发生变化。 |
业务参数 | 每个接口所需要的参数。 |
签名需传递的内容及传递方式
传递内容:
元素Key | 说明 |
---|---|
Nonce | 签名要素中的Nonce |
Timestamp | 签名要素中的Timestamp |
App | 签名要素中的App |
Sign | 计算获得的签名值 |
传递方式:
将需要传递的内容添加到 Http Header
中。没有顺序要求。
算法
过滤业务参数
把所有业务参数添加到一个Dictionary中,并过滤掉参数值为
null
的Item.对签名要素排序
把其他签名要素与对应的值添加到第一步中的Dictionary中,根据Dictionary的key按照升序排列,得到排序后的Dictionary。
拼接签名原串
把排序后的字典拼接为字符串。
单个Item按照
key=value
的形式组合,所有组合完成的Item用&
符号拼接。注意,此处用到的value实际是value的序列化值。调用SHA-256加密签名原串,得到签名值
调用SHA-256方法,对签名原串进行加密,加密得到的值就是签名值。