转换为二进制

Convert to Binary

要使用HMAC功能:

hmac.digest(key, msg, digest)

https://docs.python.org/3/library/hmac.html key 和 msg 需要在 bytes 或 bytearray 对象中。 key 和 msg 输入一般是一个字符串。我找不到一种方法可以轻松地将字符串直接转换为 bytes / bytearray 对象。看来您首先需要转换为整数,然后从那里转换为字节对象。 bin(foo) --> str 仅转换为其二进制表示,但是,bin(input) 的输出仍然是 HMAC 函数不接受的字符串。一等奖是找到一个将我的消息或键(字符串)直接转换为字节数组或字节对象的函数,如果不是这样的话?

可以通过调用字符串的encode方法获取字符串的bytes对象。您可以为其提供编码类型或将其留空,它将使用默认编码。

import hmac
import hashlib
key = "secret key"
message = "this is a secret message"
digest = hmac.digest(key.encode(), message.encode(), hashlib.sha3_256)
print(digest)

输出

b'\xdb3\xdd\xa3\xc48\xbe%"\x97;\xbf\x90\x84E\xd4\x9e\x89g\x12\x0f\'h\xc1\xc4\x95Si\x90A\xbf\xbc'

您可以在此处阅读更多相关信息 https://docs.python.org/3.8/library/stdtypes.html#str.encode。摘录如下

Return an encoded version of the string as a bytes object. Default encoding is 'utf-8'. errors may be given to set a different error handling scheme.