前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python接口自动化23-签名(signature)

python接口自动化23-签名(signature)

作者头像
上海-悠悠
发布2018-07-25 15:38:33
1.8K0
发布2018-07-25 15:38:33
举报

前言

开放的接口为了避免被别人乱调用,浪费服务器资源,这就涉及到签名(Signature)加密了

API 使用签名方法(Signature)对接口进行鉴权(Authentication)。每一次请求都需要在请求中包含签名信息, 以验证用户身份。

接口签名

1.根据需求文档,看接口的签名规则,每个签名规则都不一样,以下仅供参考:

2.从这个文档中可以看出涉及到以下几个点:

  • HMAC-SHA256

HMAC (Hash-based Message Authentication Code) 常用于接口签名验证 支持的算法有 md5、sha1、sha256、sha512、adler32、crc32等

  • Binary2HEX

将二进制转换为 HEX

  • Lowercase

将字符串转为小写

  • MD5(HTTP body)

对post请求body进行md5加密

  • Unix时间戳

Unix格式的时间戳,单位s

MD5加密

1.md5加密比较简单,直接调用hashlib内置的库就能解决

代码语言:javascript
复制
import hashlib
# MD5加密
def jiamimd5(src):
    m = hashlib.md5()
    m.update(src.encode('UTF-8'))
    return m.hexdigest()

timestamp

1.生成Unix时间戳,由于python里面获取的是带小数点的,转int类型就可以了

hmac_sha256加密

1.先用hmac里面方法生成signature字符串,注意new()里面传的两个参数是bytes类型

代码语言:javascript
复制
import hmac
import hashlib

appkey = "需要申请"
strToSign = "根据文档规则生成"

# hmac_sha256加密
signature = hmac.new(bytes(appkey, encoding='utf-8'), bytes(strToSign, encoding='utf-8'), digestmod=hashlib.sha256).digest()
# print(signature)
# 二进制转为HEX
HEX = signature.hex()
# print(HEX)
# 将字符串换为小写
lowsigne = HEX.lower()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 接口签名
  • MD5加密
  • timestamp
  • hmac_sha256加密
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档