先日Stackoverflowで私に与えられたPythonでのこの単純なhashlibコードを理解しようとしています:
import hashlib
m = hashlib.md5()
m.update("Nobody inspects")
m.update(" the spammish repetition here")
m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
m.digest_size
16
m.block_size
64
print m
print m
これで、「ここでスパムの繰り返しを検査する人はいません」というフレーズの MD5 ダイジェストが表示されると思いましたが、その結果、ローカル ホストに次の行が表示されました。
<md5 HASH object @ 01806220>
奇妙なことに、ページを更新すると、別の行が表示されました。
<md5 HASH object @ 018062E0>
更新するたびに、別の値を取得します。
md5 HASH オブジェクト @ 017F8AE0
md5 HASH オブジェクト @ 01806220
md5 HASH オブジェクト @ 01806360
md5 HASH オブジェクト @ 01806400
md5 HASH オブジェクト @ 01806220
なぜそうなのですか?たぶん、「@」が続く各行にあるのは、実際にはダイジェストではありません。では、それは何ですか?このコードで MD5 ダイジェストを表示するにはどうすればよいですか?
私のpythonバージョンはPython 2.5で、現在使用しているフレームワークはwebappです(「Google App Engine」からSDKと一緒にダウンロードしました)