我无法弄清楚'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)
答案 0 :(得分:6)
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)