0
我试图编写一些代码来防止修改列表的更新。为此,我正在计算值的SHA1哈希,但是当我重新启动我的ipython解释器时,此哈希的hexdigest()会产生不同的结果。为什么是这样?在python3中用SHA1散列并不会产生相同的结果
In [1]: import hashlib
In [2]: hashid = hashlib.sha1()
In [3]: hashid.update(repr(frozenset(sorted(["a","b","c"]))).encode("utf-8"))
In [4]: hashid.hexdigest()
Out[4]: '53ca01b21fd7cb1996634bb45ad74851f73c45d3'
当重新初始化hashid并在同一ipython3控制台它工作再次做哈希计算:
In [5]: hashid = hashlib.sha1()
In [6]: hashid.update(repr(frozenset(sorted(["a","b","c"]))).encode("utf-8"))
In [7]: hashid.hexdigest()
Out[7]: '53ca01b21fd7cb1996634bb45ad74851f73c45d3'
但停药我的控制台,并重新启动它,它会产生不同的结果:
In [7]: exit
[email protected] ~/ $ ipython3
In [1]: import hashlib
In [2]: hashid = hashlib.sha1()
In [3]: hashid.update(repr(frozenset(sorted(["a","b","c"]))).encode("utf-8"))
In [4]: hashid.hexdigest()
Out[4]: '6e5813fcb173e35e81d6138eab4d21482885e7eb'
这是为什么?当具有相同的排序列表时,如何产生相同的SHA1散列/十六进制结果?
唉唉TNX,这是有道理的......难道花了几个小时寻找这一点。这很明显。 – RvL
**请不要添加评论回答说“谢谢”。**如果答案帮助了你,[接受它](http://stackoverflow.com/help/someone-answers)。 BTW你被问了29个问题,但只接受第一个。为什么? –