如何在Python中创建散列算法的单独实例?

2024-09-28 03:13:30 发布

您现在位置:Python中文网/ 问答频道 /正文

hashlib包含哈希算法的实现。不幸的是,对hashlib.sha256()的两个连续调用不会产生两个不同的SHA256实例,而是产生同一个实例:如果调用两次hashlib.sha256(),每次都会返回相同的对象。很明显我们这里有个独生子

在任何需要并发的情况下,这都是不好的。另外,如果您想为某些算法提供散列对象,这是非常糟糕的。在我的例子中:测试失败,因为相同的对象被重用,而不是创建一个新的对象。你知道吗

我的问题是:如何创建两个SHA256实例(或任何其他哈希算法)?你知道吗

示例:

import hashlib

print(hashlib.sha256())
print(hashlib.sha256())

这将输出如下内容:

<sha256 HASH object @ 0x7fb3611b4710>
<sha256 HASH object @ 0x7fb3611b4710>

Tags: 对象实例import算法示例内容object情况
1条回答
网友
1楼 · 发布于 2024-09-28 03:13:30

在第一个示例中,第二个哈希对象是在第一个哈希对象被垃圾收集之后创建的。因此,它们可以具有相同的内存地址。在hashlib.sha256() is hashlib.sha256()中,第一个不能被垃圾收集,因为必须首先比较它。您可以将散列对象保存在变量中以使其保持活动状态:

h1 = hashlib.sha256()
h2 = hashlib.sha256()
print(h1 is h2)

[Output]
False

相关问题 更多 >

    热门问题