8

「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)
4

3 に答える 3

6

この問題が発生した理由として考えられるのは、使用していたコードが Python 3.x 用に作成され、Python 2.x で実行したことです。

誰かがすでにこれを部分的に述べていることは知っていますが、Python を初めて使用する人にとっては、「utf-8」引数が使用されている理由を理解していない可能性があるため、質問者が使用していると述べているため、より明確にするのに役立つと思いました。何のための議論だったのかわからない。

ここに来る人なら誰でも、「utf-8」の引数があった理由を理解するのに役立つかもしれません。

于 2014-06-12T19:54:13.010 に答える
6

bytes() in Python 2.x is the same as str() and it accepts only one string argument.

Use just message = "Message" and secret = "secret". You don't even need bytes() here.

于 2013-08-31T22:11:14.143 に答える
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)
于 2013-08-31T22:07:18.100 に答える