签名规则
签名规则
兑吧与开发者之间进行接口交互请求,都会包含签名参数,链接中签名参数的生成,都是通过MD5生成的签名参数,以确保请求安全。
1.MD5签名原理
兑吧签名md5签名原理如下:
将请求参数和appSecret封装成Map集合,按照参数名(Key)进行升序排列,将排序后Map集合的参数值(value)拼装成字符串进行MD5签名。其中appSecret在签名中的顺序取决于他在所有参数名中的顺序。
例:appKey:testappkey , appSecret:testsecret
参数列表:{appKey=testappkey,timestamp=1405495206727}
签名原串:testappkeytestsecret1405495206727
签名后字符串:39e73663eb1caf2096968e680991ba2c
签名url示例:http://www.duiba.com.cn/autoLogin/autologin?appKey=testappkey×tamp=129832323&sign=39e73663eb1caf2096968e680991ba2c
注意:
1.签名验证时,必须遍历request请求中的所有参数进行签名验证。
兑吧向开发者发起的请求,未来有可能会添加业务参数,开发者在验证请求时,务必对所有参数进行遍历,全部加入签名验证数据中。2.开发者切勿写死签名验证参数,未来兑吧升级参数变更将导致开发者服务不可用,请谨慎。
2.签名规则测试用例
为了方便开发者对签名方法进行测试验证,下面举例说明签名规则和签名方法。
1.以免登陆地址参数请求签名参数为例:url=" http://www.duiba.com.cn/autoLogin/autologin?sign=49b12bc5579a2a2a4652a68cd53c1e5e&uid=test&appKey=testappKey&credits=100×tamp=1520559858580&"
2.其中密钥appSecret的值为:appSecret=testappSecret。
3.获取请求链接中所有请求参数封装成Map集合 :{appKey=testappKey ; uid=test ; credits=100 ; timestamp=1520559858580} ;
4.把appSecret加入参数列表集合后如下:
{ appKey=testappKey, appSecret=testappSecret, uid=test , credits=100 , timestamp=1520559858580 }
5.把Map集合按照参数名升序排序之后如下:
{ appKey=testappKey, appSecret=testappSecret, credits=100 , timestamp=1520559858580 , uid=test }
6.根据规则,把排序后参数列表的参数值拼装成签名源串如下:
strs= testappKeytestappSecret1001520559858580test
7.把上面拼装成的参数源串加密后获得的签名如下:
sign=MD5(strs)= 49b12bc5579a2a2a4652a68cd53c1e5e
签名验证工具
为方便开发同学理解签名规则,可以使用下面的兑吧签名工具页面进行验证签名。地址如下:http://wechat.duiba.com.cn/dbsign