签名算法(sign)

**# SSdun网络验证 支持多种平台、多开发环境,此文档将帮助你将Ssdun网络验证的功能集成到你的程序或脚本中。** 请在V4接口使用此函数 ## Sign算法公式 ```language 算法格式 //后面app_secret 参数有待app_secret则需要带上 否则不需要 sign = md5(http_method + host + path + params + app_secret) ``` ## 注明 参数必须按照先后顺序排放否则无效 排序顺序参数说明 |排放位置|参数|参数说明| |-|-|-| |1 |http_method|请求方法,GET或POST| |2|host|域名,例如:api.ssdun.cn:8520| |3|path |请求地址(路径),例如:/V2/card/verify| |4|params |请求参数,例如:user_key=sjdsa&app_secret=1<br>说明:<br>1.将全部请求参数格式化成k=v<br>2.排序代码也可严格按照接口文档中的请求参数表顺序<br>(注意:1.不包括sign参数, 2.V不应进行url encode)| |5|app_secret|APP密钥,平台后台获取接口 有则携带无则取消 <br>(如心跳接口不需要携带app_secret)| |||| ## 以卡密验证为例子 ```language http_method = "POST" host = "api.ssdun.cn:8520" path = "/V4/card/verify" //注意V4 V是大写的 #params 列表 # user_key=c66f660a1a86e69f4a0c7d0e9db4612a8781558e8b0c5861a539b61dcb77cc6e # app_secret=7 # card=66_MGI4OTM0ZzM5YjIwNmc1N2Y5NmU3MGM2Njc1YjRiMDA= # machine_code=ceshizhuanyong # timestamp=1615995416 # 将以上格式化的参数排序后,用 & 符号相隔拼接起来 params="user_key=c66f660a1a86e69f4a0c7d0e9db4612a8781558e8b0c5861a539b61dcb77cc6e&app_secret=7&card=66_MGI4OTM0ZzM5YjIwNmc1N2Y5NmU3MGM2Njc1YjRiMDA=&machine_code=ceshizhuanyong&timestamp=1574654197" #sign计算公式 sign = md5(http_method + host + path + params + app_secret) print(sign) # 输出 23110A0A9EFF539C4C9B1E3F131FBA68 ``` ## 其他参数说明 - timestamp:当前时间戳保证签名只在1分钟内有效,请求到达服务器后会将时间戳参数与当前服务器时间相比较,是否超过了60s。防止别有用心的人抓包并重放请求。