# 签名规则
**短说OSX**与开发者之间进行接口交互请求,都会包含签名参数,链接中签名参数的生成,都是通过MD5生成的签名参数,以确保请求安全。
### 1.MD5签名原理
md5签名原理如下:
将请求参数和appSecret封装成Map集合,按照**参数名**(Key)进行升序排列,将排序后Map集合的参数值(value)拼装成字符串进行MD5签名。其中appSecret在签名中的顺序取决于他在所有参数名中的顺序。
例: `appKey:testappkey , appSecret:testsecret`
参数列表:`{appKey=testappkey,endtimestamp=1405495206}`
签名原串:`testappkeytestsecret1405495206`
签名后字符串:`fc89ad8645fe705f024edfc00c02aeee`
签名url示例:<http://(domain)?endtimestamp=1405495206&appKey=testappKey&sign=fc89ad8645fe705f024edfc00c02aeee>
#### 注意:
\> 1.签名验证时,如无特殊说明,必须遍历request请求中的所有参数进行签名验证。 > 短说向开发者发起的请求,也会带上签名,开发者可在提供的api中进行签名验证,确保请求来源可信。
### 2.签名规则测试用例
为了方便开发者对签名方法进行测试验证,下面举例说明签名规则和签名方法。
1.以免登陆地址参数请求签名参数为例:url=" [http://osxfenew.demo.opensns.cn/#/autoLogin?&user\_token=14359234985&token=23453654fsdgjk&endtimestamp=1520559858&appKey=testappKey&sign=3fdde881d58af54792f2e3198244f3a2&redirect=https%3a%2f%2fosxfenew.demo.opensns.cn%2f%23%2fpackageA%2fforum-detail%2fnormal%3ffid%3d44](http://osxfenew.demo.opensns.cn/#/autoLogin?&user_token=14359234985&token=23453654fsdgjk&endtimestamp=1520559858&appKey=testappKey&sign=3fdde881d58af54792f2e3198244f3a2&redirect=https%3a%2f%2fosxfenew.demo.opensns.cn%2f%23%2fpackageA%2fforum-detail%2fnormal%3ffid%3d44) "
2.其中密钥appSecret的值为:appSecret=testappSecret。
3.获取请求链接中所有请求参数封装成Map集合 :{appKey=testappKey ; user\_token=14359234985(开发者平台用户唯一标识) ;token=23453654fsdgjk(请求单次有效唯一标识,开发者服务端在用户信息获取接口中校验请求合法性); endtimestamp=1520559858} ;
4.把appSecret加入参数列表集合后如下:
{ appKey=testappKey, appSecret=testappSecret, user\_token=14359234985 , endtimestamp=1520559858, token=23453654fsdgjk }
5.把Map集合按照**参数名升序**排序之后如下:
{ appKey=testappKey, appSecret=testappSecret, endtimestamp=1520559858 ,token=23453654fsdgjk, user\_token=14359234985 }
6.根据规则,把排序后参数列表的参数值拼装成签名源串如下:
strs= testappKeytestappSecret152055985823453654fsdgjk14359234985
7.把上面拼装成的参数源串加密后获得的签名如下: sign=MD5(strs)= 3fdde881d58af54792f2e3198244f3a2
##### 说明:
\> OSX短说采用appKey、appSecret的键值对形式作为密钥对,而非采用单一secret的形式,主要是为了后续多应用模式留下入口。广大开发者们不必纠结
## 签名验证工具
为方便开发同学理解签名规则,可以使用下面的短说OSX签名工具页面进行验证签名。地址如下:[签名校验工具](https://osxbe.demo.opensns.cn/commonapi/index/checkTokenSign)