【发布时间】:2020-01-31 03:13:20
【问题描述】:
我有一个散列字符串的简单程序。
from Crypto.Hash import SHA512
PAYLOAD = "Hello world"
def sha(message):
h = SHA512.new()
h.update(message.encode('ascii'))
return h.digest()
if __name__ == '__main__':
print(sha(PAYLOAD))
print(type(sha(PAYLOAD)))
这是输出,
b'\xb7\xf7\x83\xba\xed\x82\x97\xf0\xdb\x91tb\x18O\xf4\xf0\x8ei\xc2\xd5\xe5\xf7\x9a\x94&\x00\xf9r_X\xce\x1f)\xc1\x819\xbf\x80\xb0l\x0f\xff+\xdd4s\x84R\xec\xf4\x0cH\x8c"\xa7\xe3\xd8\x0c\xdfo\x9c\x1c\rG'
我不明白这是一个字节数组吗?
【问题讨论】:
-
take
\xb7: 这意味着 1 字节值 0xB7 十六进制。您可以使用hexdigest来获取字符串。并且显示非 x 符号是因为它们在 ASCII 可显示范围内。 -
每个字节由一对十六进制数表示;例如,在字节“10110111”中,前四位数字转换为 0xB(十进制 11),后四位数字转换为 0x7。
-
你的代码有两个
print()调用,为什么只有一行输出?