gpt4 book ai didi

Python 3 使用 key sha512 签署消息

转载 作者:行者123 更新时间:2023-11-28 22:40:33 25 4
gpt4 key购买 nike

我有以下代码行:

return hmac.new(self.Secret.upper() , message , hashlib.sha512).digest().encode("base64").replace("\n","")

这在 Python2 中工作正常,但在 Python 3 中不行。只要我在 Python 3 中尝试,我就会得到:

TypeError: key: expected bytes or bytearray, but got 'str'

来自 hmac.py。我当然尝试过使用 bytes()bytearray() 转换 self.Secretmessage,但是这也没有用。

我也尝试过使用 hashlib.sha512 生成 key ,但我不是很清楚。我有一个 secret 的 API key ,需要用于签署 POST 数据,唯一明确的方法是使用 hmac.new(),但是当我最终得到可以传递的东西时作为一个字符串,它看起来完全不像它应有的样子,正如预期的那样,我无法用它进行身份验证。

另一个尝试是:

sign = hashlib.sha512(message_to_sign)
sign.update(self.Secret.upper())

这还会生成一个字符串,看起来与来自 Python 2.7 中原始代码的工作 key 完全不同。

我也尝试了很多其他变体,但没有一个能给我任何有用的东西。

最佳答案

这个适用于 python 3.4.2:

print((base64.b64encode(hmac.new(bytearray("SECRET".upper(), "ASCII") , bytearray("TEST","ASCII") , hashlib.sha512).digest())).decode("ASCII").replace("\n", ""))

...并计算出正确的 HMAC。

您可能希望将 "ASCII" 更改为其他编码。

关于Python 3 使用 key sha512 签署消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33455463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com