変更されたリストを更新できないようなコードを書こうとしています。これについては、値の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ハッシュ/ hexdigest結果を生成することができます同じソートされたリストを持っている?
ああのTNX、理にかなって...これを探して時間を費やしているん:
list
sがfrozenset
はあなたに一意性の保証を取得しますが、順序を保証しているソート。これにより多くのことが明らかになります。 – RvL**「ありがとうございました」と言う回答にコメントを追加しないでください。**回答が助けになった場合は、[同意します](http://stackoverflow.com/help/someone-answers)。あなたは29の質問を受けましたが、最初のものだけを受け入れました。どうして? –