对外的api接口往往需要进行请求合法性安全性校验,最简单的就是sign,简单的请求参数拼接加key然后进行md5。以下接口均已测试通过
加密规则
将请求的所有参数进行排序(正序)后按照key1=value1&key2=value2依次拼接后,添加key进行md5加密,得到sign放置请求url中。
请求url拼接参数必须包含timestamp时间戳(秒)和sign签名参数,这里我们使用key为shahao
示例
http://127.0.0.1/test,请求方式为post,参数为
{
"aStr":"1234",
"bStr":"aaaa",
"zInt":12
}
加密:md5(aStr=1234&bStr=aaa×tamp=1598321920&zInt=12&key=shahao)
结果为:4ded2765408821950519318a329d03e7
最后请求url为http://127.0.0.1/test?sign=4ded2765408821950519318a329d03e7×tamp=1598321920
{
"aStr":"1234",
"bStr":"aaaa",
"zInt":12
}
程序逻辑需要对时间戳进行校验,根据业务来确定过期时间。
测试接口
1、设置你的key和过期时间接口
- 请求url:http://47.110.227.59:4000/api/sign/set
- 说明:此接口根据你调用请求的ip配置加密APPSecretKey,设置完毕后可以调用测试接口(/api/sign/test)验证你的代码书写是否正常
- 请求方式:POST,application/json
- 请求参数
参数名 | 是否必须 | 类型 | 说明 |
---|---|---|---|
key | 是 | string | 加密APPSecretKey,小于50 |
expire | 是 | int64 | sign有效时长,秒 |
- 请求示例
{
"key":"shahaohaoshuai",
"expire":7
}
- 请求返回示例
## 成功
{
"code": 0,
"data": true,
"msg": "success."
}
2、通过参数获取加密后的sign
-
说明:在您调用了设置加密key接口后,可根据此接口传您的参数,获取对应的时间戳和sign
-
请求方式:GET
-
请求参数:根据你的业务传参
-
请求示例:http://47.110.227.59:4000/api/sign/get?string=121313&int=21221
-
请求返回示例
## 成功
{
"code": 0,
"data": {
"sign": "8ccce62056608dd91fbf50999371fe59",
"timestamp": "1598705745"
},
"msg": "success."
}
3、测试接口
-
说明:测试你的sign加密是否正确,前提是设置了key
-
请求方式:POST
-
请求示例:http://47.110.227.59:4000/api/sign/test?sign=2bf7f8986e2fa3c848c63bddb438d0ad×tamp=1598706120
{
"string":121313,
"int":"21221"
}
- 请求返回示例
## 成功
{
"code": 0,
"data": true,
"msg": "success."
}
网友评论