【问题标题】:What does hexdigest do in Python?hexdigest 在 Python 中做了什么?
【发布时间】:2020-10-13 01:49:56
【问题描述】:

我们需要这样一个哈希代码:

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

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

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

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

【问题讨论】:

标签: python hash sha256 hashlib


【解决方案1】:

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

您可以争辩说接口可能不同 - 例如,str(obj) 可以生成十六进制表示;但这只会将问题推到一个不同的、可以说是更晦涩的角落。

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2018-12-04
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-07-09
    • 2011-06-18
    • 2020-05-23
    • 2020-03-19
    相关资源
    最近更新 更多