zoukankan      html  css  js  c++  java
  • 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

    也可以关注下我的个人公众号:

  • 相关阅读:
    BNU 51002 BQG's Complexity Analysis
    BNU OJ 51003 BQG's Confusing Sequence
    BNU OJ 51000 BQG's Random String
    BNU OJ 50999 BQG's Approaching Deadline
    BNU OJ 50998 BQG's Messy Code
    BNU OJ 50997 BQG's Programming Contest
    CodeForces 609D Gadgets for dollars and pounds
    CodeForces 609C Load Balancing
    CodeForces 609B The Best Gift
    CodeForces 609A USB Flash Drives
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/9058149.html
Copyright © 2011-2022 走看看