2013-08-31 5 views
8

'바이트'메서드가 무엇을 불평하는지 파악할 수 없습니다. 아래의 코드에서, 난 내 클라이언트에 대한 인증 키를 생성하기 위해 노력하고 그리고 난이 오류 [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) 
+2

'bytes()'는 하나의 문자열 인수만을 허용합니다. 'message = bytes ("Message")'와'secret = bytes ("secret")'을 시도해보십시오. – alecxe

답변

6

bytes()str()과 같으며 하나의 문자열 인수 만 허용합니다.

message = "Message"secret = "secret" 만 사용하십시오. 여기에 bytes()도 필요하지 않습니다.

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) 
6

이 문제가 발생했을 가능성이있는 이유는 사용한 코드가 Python 3.x 용으로 작성되었으며 Python 2.x에서 실행했기 때문입니다.

누군가가 이미 부분적으로이 사실을 알고 있지만 파이썬에 익숙하지 않은 사람들이 'utf-8'인수를 사용하는 이유를 알지 못하는 사람들에게 더 명확하게 설명하는 것이 도움이 될 것이라고 생각했습니다. 질문은 논쟁이 무엇인지 알지 못했다고 지적했다.

여기에 오는 사람은 'utf-8'인수가 있었던 이유를 이해하는 데 도움이 될 것입니다.