python接口自动化22-签名(signature)鉴权(authentication)之加密(HEX、MD5、HMAC-SHA256)
前言
开放的接口为了避免被别人乱调用,浪费服务器资源,这就涉及到签名(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内置的库就能解决
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类型
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()

---------------------------------python接口自动化完整版-------------------------
全书购买地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695
作者:上海-悠悠 QQ交流群:588402570
也可以关注下我的个人公众号:

python接口自动化22-签名(signature)鉴权(authentication)之加密(HEX、MD5、HMAC-SHA256)的更多相关文章
- python接口自动化28-requests-html爬虫框架
前言 requests库的好,只有用过的人才知道,最近这个库的作者又出了一个好用的爬虫框架requests-html.之前解析html页面用过了lxml和bs4, requests-html集成了一些 ...
- 2020年第二期《python接口自动化+测试开发》课程,已开学!
2020年第二期<python接口自动化+python测试开发>课程,12月15号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:12月15号-3月29 ...
- Python接口自动化——soap协议传参的类型是ns0类型的要创建工厂方法纪要
1:在Python接口自动化中,对于soap协议的xml的请求我们可以使用Suds Client来实现,其soap协议传参的类型基本上是有2种: 第一种是传参,不需要再创建啥, 第二种就是ns0类型的 ...
- python接口自动化(十)--post请求四种传送正文方式(详解)
简介 post请求我在python接口自动化(八)--发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先 ...
- python接口自动化-Cookie_绕过验证码登录
前言 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以通过添加Cookie的方式绕过验证码 前面在“pyt ...
- python接口自动化-参数化
原文地址https://www.cnblogs.com/yoyoketang/p/6891710.html python接口自动化 -参数关联(一)https://www.cnblogs.com/11 ...
- python接口自动化 -参数关联(一)
原文地址https://www.cnblogs.com/yoyoketang/p/6886610.html 原文地址https://www.cnblogs.com/yoyoketang/ 原文地址ht ...
- python接口自动化20-requests获取响应时间(elapsed)与超时(timeout)
前言 requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的. 如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间 关于reques ...
- python接口自动化24-有token的接口项目使用unittest框架设计
获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...
随机推荐
- VM遇到的问题参考
http://saturn.blog.51cto.com/184463/950731/
- SPI总线协议介绍
http://blog.csdn.net/ce123_zhouwei/article/details/6897293 https://www.cnblogs.com/yangguang-it/p/71 ...
- vue-parcel打包入门
what 快速,零配置的 Web 应用程序打包器 why 快捷,配置比较少 使用 Parcel 打包的 vue HelloWorld 应用.GitHub 地址: https://github.com/ ...
- 【Spring实战】Spring容器初始化完成后执行初始化数据方法
一.背景知识及需求 在做WEB项目时,经常在项目第一次启动时利用WEB容器的监听.Servlet加载初始化等切入点为数据库准备数据,这些初始化数据是系统开始运行前必须的数据,例如权限组.系统选项.默认 ...
- Python 之文件上传
基于form表单提交 # 需要指定form-data,不能直接拼键值对 可以指定name照片存在位置 views.py from django.shortcuts import render,redi ...
- 2D game engine essentials [to be continued...]
All 2D Game Engines/Frameworks are trying to solve the same problem(s). Languages don't matter- they ...
- Tomcat 配置虚拟路径保存、访问图片
转载自:https://www.cnblogs.com/magic101/p/7756402.html 配置tomcat的虚拟映射路径 1.修改Tomcat的server.xml文件 <Host ...
- Windows 10 四月更新,文件夹名称也能区分大小写?
Windows 向来是不区分文件和文件夹大小写的,但是从 NTFS 开始却又支持区分文件夹大小写.而 Linux/Mac OS 一向都是区分文件和文件夹大小写的. 本文将推荐 Windows 10 四 ...
- 《DSP using MATLAB》示例Example 8.23
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 接口测试框架——第二篇-python读取excel文件内容
今天完善excel_module.py文件,上代码: # coding: utf-8 import xlrd class ReadExcel(): def __init__(self, file_na ...