python接口自動化(十九) 簽名(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
def md5_jiami(p):
    m=hashlib.md5()
    m.update(p.encode('UTF-8'))
    return m.hexdigest()
print(md5_jiami('123456'))

 運行結果

 

 timestamp

1.生成Unix時間戳,由於python里面獲取的是帶小數點的,轉int類型,就可以了

import time
print(time.time())
print(int(time.time()))

 運行結果

 

 hmac_sha256加密

1.先用hmac里面方法生成signature字符串,注意new()里面傳的兩個參數是bytes類型

import hmac
import hashlib
appkey="one"
strToSign="six"
#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()
print(lowsigne)

s=hmac.new(bytes(appkey,encoding='utf-8'),bytes(strToSign,encoding='utf-8'),digestmod=hashlib.sha256).hexdigest().lower()
print(s)  

 運行結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM