我有一个包含字符串数据的类,我应该使用hashlib.sha256()来计算整个对象的哈希值。
hashlib.sha256()
Hash = hashlib.sha256(c.encode()).digest()
我想计算整个对象的哈希值,有人建议我在类中有一个函数,这样它就可以返回其中数据的哈希值。它和整个块的哈希值一样吗?什么是更好的实现?
rekjcdws1#
你需要为你的类实现神奇的方法__hash__。然后你可以使用你的类的一个示例,例如,作为一个字典的键。同样,如果你只需要得到一个哈希值,你可以简单地使用内置函数hash():
__hash__
hash()
c = MyClass() c_hash = hash(c)
wixjitnu2#
目前的答案让我们看起来好像有必要定义__hash__。作为部分答案,我因此澄清这在逻辑上是错误的。人们应该能够实现sha256或python解释器,以便对给定的类对象进行完整的散列。原因:使用pickle转储,可以将一个对象唯一地保存到文件中。因此,这仅仅是语言的不足之处,应该可以通过一些样板代码来修复。
2条答案
按热度按时间rekjcdws1#
你需要为你的类实现神奇的方法
__hash__
。然后你可以使用你的类的一个示例,例如,作为一个字典的键。同样,如果你只需要得到一个哈希值,你可以简单地使用内置函数hash()
:wixjitnu2#
目前的答案让我们看起来好像有必要定义
__hash__
。作为部分答案,我因此澄清这在逻辑上是错误的。人们应该能够实现sha256或python解释器,以便对给定的类对象进行完整的散列。
原因:使用pickle转储,可以将一个对象唯一地保存到文件中。因此,这仅仅是语言的不足之处,应该可以通过一些样板代码来修复。