Python3 'bytes' 对象中的 HMAC-SHA1 没有属性 'encode'

正如这个答案中所描述的,我已经实现了 HMAC-SHA1 签名方法。


def sign_request():

    from hashlib import sha1

    import hmac


    key = b"CONSUMER_SECRET&"  

    basestr = b"BASE_STRING"

    hashed = hmac.new(key, basestr, sha1)

    return hashed.digest().encode("base64").rstrip('\n')

但我有AttributeError,'bytes' object has no attribute 'encode'。据我了解,这就是我使用 Python3 的原因,但我不知道如何修复它。


largeQ
浏览 138回答 1
1回答

慕码人2483693

那是因为它是一个字节,而您正在尝试像字符串一样进行编码。我修好了它:from base64 import encodebytesdef sign_request():    from hashlib import sha1    import hmac    key = b"CONSUMER_SECRET&"      basestr = b"BASE_STRING"    hashed = hmac.new(key, basestr, sha1)    return str(encodebytes(hashed.digest())).rstrip('\n')print(sign_request())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python