微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HMAC在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,hashlib.sha512)

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

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

和hashlib.new()将用于构造哈希对象.

演示:

>>> import hashlib
>>> import hmac
>>> secret = b'mysecret'
>>> url = b'http://someurl.com/something/'
>>> signing = hmac.new(secret,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'

原文地址:https://www.jb51.cc/python/439725.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐