字节消息参数

2024-05-23 21:09:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我搞不懂“bytes”方法在抱怨什么。在下面的代码中,我正试图为我的客户机生成一个身份验证密钥,并且我一直收到这个错误[1]

import hmac
import hashlib
import base64

message = bytes("Message", 'utf-8') # errors here
secret = bytes("secret", 'utf-8')

signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest());
print(signature)

[一]

Traceback (most recent call last):
  File "API/test/auth-client.py", line 11, in <module>
    message = bytes("Message", 'utf-8')
TypeError: str() takes at most 1 argument (2 given)

Tags: 方法代码importmessagemostsecret客户机bytes
3条回答

Python 2.x中的bytes()str()相同,它只接受一个字符串参数。

只用message = "Message"secret = "secret"。你甚至不需要这里。

您遇到此问题的可能原因是您使用的代码是为Python3.x编写的,并且是在Python2.x下执行的

我知道有人已经部分地说明了这一点,但我认为这可能有助于让Python新手更清楚地了解为什么使用“utf-8”参数,因为提问的人注意到他们不知道该参数的用途。

来到这里的任何人都可能会发现,这对理解为什么会有“utf-8”的争论很有帮助。

试试看

import hmac
import hashlib
import base64

message = bytes("Message")
secret = bytes("secret")

signature = base64.b64encode(hmac.new(secret, message, digestmod=hashlib.sha256).digest())
print(signature)

相关问题 更多 >