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

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

  • 相关阅读:
    关于全景漫游
    webgl圈中物体
    css3の极限
    reactjs弹幕视频播放
    数值积分I
    显出你的h5逼格
    奇葩のbeforeunload
    面试问题搜集及解析
    TCP拥塞控制(滑动窗口机制)
    如何使CPU占用率为50%
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/9058149.html
Copyright © 2011-2022 走看看