码迷,mamicode.com
首页 > 编程语言 > 详细

python接口自动化23-签名(signature)鉴权(authentication)之加密(HEX、MD5、HMAC-SHA256)

时间:2018-05-26 23:23:36      阅读:940      评论:0      收藏:0      [点我收藏+]

标签:需求   sage   进制   md5加密   mes   简单   enc   sed   upd   

前言

开放的接口为了避免被别人乱调用,浪费服务器资源,这就涉及到签名(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 1.md5加密比较简单,直接调用hashlib内置的库就能解决
3 import hashlib
4 # MD5加密
5 def jiamimd5(src):
6     m = hashlib.md5()
7     m.update(src.encode(UTF-8))
8     return m.hexdigest()

 

timestamp

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

技术分享图片

hmac_sha256加密

 1 1.先用hmac里面方法生成signature字符串,注意new()里面传的两个参数是bytes类型
 2 import hmac
 3 import hashlib
 4 appkey = "需要申请"
 5 strToSign = "根据文档规则生成"
 6 # hmac_sha256加密
 7 signature = hmac.new(bytes(appkey, encoding=utf-8), bytes(strToSign, encoding=utf-8), digestmod=hashlib.sha256).digest()
 8 # print(signature)
 9 # 二进制转为HEX
10 HEX = signature.hex()
11 # print(HEX)
12 # 将字符串换为小写
13 lowsigne = HEX.lower()

 

 
 
 

 

python接口自动化23-签名(signature)鉴权(authentication)之加密(HEX、MD5、HMAC-SHA256)

标签:需求   sage   进制   md5加密   mes   简单   enc   sed   upd   

原文地址:https://www.cnblogs.com/jason89/p/9094601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!