字节消息参数错误

时间:2013-08-31 22:01:43

标签: python python-3.x base64

我无法弄清楚'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)

[1]

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)

3 个答案:

答案 0 :(得分:6)

Python 2.x中的

bytes()str()相同,只接受一个字符串参数。

仅使用message = "Message"secret = "secret"。你甚至不需要bytes()

答案 1 :(得分:6)

您遇到此问题的可能原因是您使用的代码是为Python 3.x编写的,而您是在Python 2.x下执行的。

我知道有人已经部分说过了这一点,但我认为对于那些可能没有意识到为什么&#39; utf-8&#39;辩论被用作提出问题的人,指出他们不知道论证的内容。

任何来到这里的人都会发现这对于理解为什么存在“utf-8&#39;

的论据很有用。”

答案 2 :(得分:1)

试,

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)