hashlib
包含哈希算法的实现。不幸的是,对hashlib.sha256()
的两个连续调用不会产生两个不同的SHA256实例,而是产生同一个实例:如果调用两次hashlib.sha256()
,每次都会返回相同的对象。很明显我们这里有个独生子
在任何需要并发的情况下,这都是不好的。另外,如果您想为某些算法提供散列对象,这是非常糟糕的。在我的例子中:测试失败,因为相同的对象被重用,而不是创建一个新的对象。你知道吗
我的问题是:如何创建两个SHA256实例(或任何其他哈希算法)?你知道吗
示例:
import hashlib
print(hashlib.sha256())
print(hashlib.sha256())
这将输出如下内容:
<sha256 HASH object @ 0x7fb3611b4710>
<sha256 HASH object @ 0x7fb3611b4710>
在第一个示例中,第二个哈希对象是在第一个哈希对象被垃圾收集之后创建的。因此,它们可以具有相同的内存地址。在
hashlib.sha256() is hashlib.sha256()
中,第一个不能被垃圾收集,因为必须首先比较它。您可以将散列对象保存在变量中以使其保持活动状态:相关问题 更多 >
编程相关推荐