2016-06-20 11 views
3

私はPythonで同じ文字列のユニークなハッシュを持っていたいと思います。ハッシュを取得するために次のコードを使用します:hashlibでhexdigest()を呼び出すたびに異なるハッシュ値を取得するのはなぜですか?

import hashlib 
mysha1 = hashlib.sha1() 
mysha1.update("my_url") 
print mysha1.hexdigest() 
mysha1.update("my_url") 
print mysha1.hexdigest() # which is generating a different hash 

私はここで逃したものがありますか?

+2

を二回目は、 ''「my_urlmy_url」の文字列のハッシュを取得しています。今、答えを読んで;-) –

答えて

1

ちょうど例えば、何度もupdate多くを呼び出すことはありません:

>>> import hashlib 
>>> mysha1 = hashlib.sha1() 
>>> mysha1.update("my_url") 
>>> mysha1.hexdigest() 
'ebde90b9f0c047ff9f86bec3b71afe5d00594030' 
>>> mysha1.hexdigest() 
'ebde90b9f0c047ff9f86bec3b71afe5d00594030' 
5

update()関数は連結される文字列を供給します。

https://docs.python.org/2/library/hashlib.html

>>> import hashlib 
>>> mysha1 = hashlib.sha1() 
>>> mysha1.update("my_url") 
>>> print mysha1.hexdigest() 
ebde90b9f0c047ff9f86bec3b71afe5d00594030 
>>> mysha1.update("my_url") 
>>> print mysha1.hexdigest() 
efa6ba48cedd0da886a553ad0e7c131ec79b452e 
>>> 
>>> 
>>> sha = hashlib.sha1() 
>>> sha.update("my_urlmy_url") 
>>> print sha.hexdigest() 
efa6ba48cedd0da886a553ad0e7c131ec79b452e 
3

あなたがupdate("my_url")を呼び出すときは、ハッシュ入力にconcatenatingその文字列です。

このオブジェクトには、update()メソッドを使用して任意の文字列を入力できます。いつでも、digest()メソッドまたはhexdigest()メソッドを使用して、それまでに入力された文字列の連結のダイジェストを要求することができます。

新しいハッシュを作成するたびに、新しいsha1オブジェクトを作成する必要があります。

関連する問題