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個問題,但只接受第一個。爲什麼? –