| 
 | 
 
 
发表于 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接口时,我们需要将签名作为一个参数传递给服务器,服务器会根据签名验证请求的合法性。 |   
 
 
 
 |