Python 中的 hexdigest 有什么作用?

What does hexdigest do in Python?

我们需要这样的哈希代码:

from hashlib import sha256
Hash = sha256(b"hello").hexdigest()
#Hash = '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'

hexdigest 似乎在做主要的事情,因为没有它我们将得到以下结果:

Hash = sha256(b"hello")
#Hash = <sha256 HASH object @ 0x000001E92939B950>

hexdigest的使用是必须的,因为如果不使用,会得到另一个输出,但是它有什么作用?

实际摘要是一个非常大的数字。它通常表示为一系列十六进制数字,因为我们人类不太擅长处理多于少数几个数字的数字(十六进制的优点是它可以很好地揭示某些类型的二进制模式;例如,你很难推断出像 4,262,789,120 这样的数字,而它的十六进制表示 FE150000 很容易表明低 16 位都是零)但是 object 不仅仅是一个数字;它是一个 class 实例,其中包含允许您使用的方法,例如以块的形式添加更多数据,以便您可以连续计算大文件或数据流的摘要,而无需将其全部保存在内存中。您可以将摘要对象视为允许此操作重复多次的状态集合,并将十六进制摘要方法视为在输入流中的当前点查询其状态的一种方式。

您可能会争辩说接口可能会有所不同 - 例如,str(obj) 可能会产生十六进制表示;但这只会把问题推到另一个更隐蔽的角落。