我尝试根据instructions
在python中用HMAC-SHA256编码消息import hmac
import hashlib
nonce = 1234
customer_id = 123232
api_key = 2342342348273482374343434
API_SECRET = 892374928347928347283473
message = nonce + customer_id + api_key
signature = hmac.new(
API_SECRET,
msg=message,
digestmod=hashlib.sha256
).hexdigest().upper()
但我得到了这个
回溯(最近一次呼叫最后一次):文件" gen.py",第13行,in digestmod = hashlib.sha256 File" /usr/lib/python2.7/hmac.py" ;,第136行,in new 在 init 中返回HMAC(key,msg,digestmod)文件" /usr/lib/python2.7/hmac.py",第71行 如果len(键)> blocksize:TypeError:类型为' long'的对象没有len()
有没有人知道为什么会崩溃?
答案 0 :(得分:4)
您正在使用api需要字符串/字节的数字。
# python 2
import hmac
import hashlib
nonce = 1234
customer_id = 123232
api_key = 2342342348273482374343434
API_SECRET = 892374928347928347283473
message = '{} {} {}'.format(nonce, customer_id, api_key)
signature = hmac.new(
str(API_SECRET),
msg=message,
digestmod=hashlib.sha256
).hexdigest().upper()
print signature
答案 1 :(得分:1)
如果你想在python3中执行,你应该执行以下操作:
#python 3
import hmac
import hashlib
nonce = 1
customer_id = 123456
API_SECRET = 'thekey'
api_key = 'thapikey'
message = '{} {} {}'.format(nonce, customer_id, api_key)
signature = hmac.new(bytes(API_SECRET , 'latin-1'), msg = bytes(message , 'latin-1'), digestmod = hashlib.sha256).hexdigest().upper()
print(signature)