在Python3中使用hmac.new()

时间:2017-07-20 17:03:55

标签: python-3.x

我如何使用此功能:

def generate_sig(endpoint, params, secret):
sig = endpoint
for key in sorted(params.keys()):
    sig += '|%s=%s' % (key, params[key])
return hmac.new(secret, sig, sha256).hexdigest()

使用以下参数:

endpoint = '/media/657988443280050001_25025320'
params = {
'access_token': 'fb2e77d.47a0479900504cb3ab4a1f626d174d2d',
'count': 10,
}
secret = '6dc1787668c64c939929c17683d7cb74'

在Python 3中?现在我收到了这个错误:

TypeError: key: expected bytes or bytearray, but got 'str'

1 个答案:

答案 0 :(得分:0)

为我工作:

def generate_sig(endpoint, params, secret):
    sig = endpoint
    for key in sorted(params.keys()):
        sig += '|%s=%s' % (key, params[key])
    return hmac.new(bytes(secret,encoding='ascii'), 
                    bytes(sig,encoding='ascii'), 
                    sha256).hexdigest()

通过这种方式,您只能像 bytes 一样进行编码,以获取哈希值。