簡體   English   中英

HMAC在Python中簽名請求

[英]HMAC signing requests in Python

我正在嘗試使用請求庫在Python 3.4中為API調用創建HMAC-SHA512簽名請求。 我正在嘗試關注文檔,但是我遇到了這個錯誤:

AttributeError: '_hashlib.HASH' object has no attribute 'new'

這是一些代碼。 它失敗了hmac構造函數的錯誤。 如果我嘗試傳遞hashlib.md5()或完全省略摘要參數,那就沒問題。

我不確定我之后是否正確簽署了請求,因為我還沒有那么遠。 我試圖使用的服務的文檔說我用我的秘密簽署URL。 我需要這個字節串才能使用。

import hmac
import hashlib
import requests

secret = b'mysecret'
url = b'http://someurl.com/something/'

signing = hmac.new(secret, url, hashlib.sha512())

headers = {'apisign': signing.digest()}
response = requests.get(url, headers=headers)

任何指針贊賞。 我找不到一個例子。 謝謝!

您必須傳入對hashlib.sha512可調用的引用,而不是調用它的結果:

signing = hmac.new(secret, url, hashlib.sha512)

或者,你可以使用字符串'sha512'

signing = hmac.new(secret, url, 'sha512')

hashlib.new()將用於構造哈希對象。

演示:

>>> import hashlib
>>> import hmac
>>> secret = b'mysecret'
>>> url = b'http://someurl.com/something/'
>>> signing = hmac.new(secret, url, hashlib.sha512)
>>> signing.digest()
b'!~s2\x97\x97\xa9\xcc\xefcb\xa8\xcc\xa7\xbc\xec\xe5\xfc\xc3\xac\xfc\xbc5]\x05\x96\xc7\x83\x8b\x1b\x90\xd3\xa5\xca\x8cLsC\x17\xa0\xea\xa3\xfe\xd8M\xfda\x1epj\x90\xff}\xfa\xc2@\x92\xfb\xee\xa8\xab\x1b\x08\x8e'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM