|
发表于 2023-9-19 10:53:29
|
显示全部楼层
Signature(签名)是一种用于验证请求的身份的机制,通常用于API接口的访问授权。
签名的生成通常需要以下几个参数:
1. 请求参数:即请求中携带的所有参数,包括请求方法、请求路径、请求参数等。
2. 密钥:用于加密生成签名的密钥,只有具有密钥的用户才能生成有效的签名。
3. 加密算法:用于生成签名的加密算法,常见的有MD5、SHA1、SHA256等。
具体生成签名的过程可以分为以下几步:
1. 将所有请求参数按照参数名的字典序排序。
2. 将排序后的请求参数按照“参数名=参数值”的格式拼接成一个字符串。
3. 在拼接好的字符串末尾加上密钥。
4. 对加密前的字符串进行加密,生成签名。
例如,假设我们要请求一个API接口,请求参数为:
{
"method": "GET",
"path": "/api/user/info",
"timestamp": "1626179375",
"app_key": "123456",
"token": "abcdefg"
}
假设我们的密钥为 abcdefg ,加密算法为MD5,则生成签名的过程如下:
1. 将所有请求参数按照参数名的字典序排序,得到:
{
"app_key": "123456",
"method": "GET",
"path": "/api/user/info",
"timestamp": "1626179375",
"token": "abcdefg"
}
2. 将排序后的请求参数按照“参数名=参数值”的格式拼接成一个字符串,得到:
app_key=123456&method=GET&path=/api/user/info×tamp=1626179375&token=abcdefg
3. 在拼接好的字符串末尾加上密钥,得到:
app_key=123456&method=GET&path=/api/user/info×tamp=1626179375&token=abcdefgabcdefg
4. 对加密前的字符串进行加密,生成签名,得到:
MD5("app_key=123456&method=GET&path=/api/user/info×tamp=1626179375&token=abcdefgabcdefg") = "e8f9e8c3c4a4e1b4b7c6d7c4d4e8e7b1"
最终,我们得到了签名 e8f9e8c3c4a4e1b4b7c6d7c4d4e8e7b1 。在请求API接口时,我们需要将签名作为一个参数传递给服务器,服务器会根据签名验证请求的合法性。 |
|