加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

HMAC在Python中签名请求

发布时间:2020-12-16 23:53:16 所属栏目:Python 来源:网络整理
导读:我正在尝试使用请求库在Python 3.4中为API调用创建HMAC-SHA512签名请求.我正在尝试关注文档,但是我遇到了这个错误: AttributeError: '_hashlib.HASH' object has no attribute 'new' 这是一些代码.它失败了hmac构造函数的错误.如果我尝试传递hashlib.md5()

我正在尝试使用请求库在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'!~s2x97x97xa9xccxefcbxa8xccxa7xbcxecxe5xfcxc3xacxfcxbc5]x05x96xc7x83x8bx1bx90xd3xa5xcax8cLsCx17xa0xeaxa3xfexd8Mxfdax1epjx90xff}xfaxc2@x92xfbxeexa8xabx1bx08x8e'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读