本当はSHAの256がほしかったんだけど、
ダウンロード元のメーカーが提供しているSHA256が間違っていて使えないことが判明したので・・・;;
MD5で我慢してみる。
import hashlib
BUFFER=4096
def md5sum( filepath ):
hasher = hashlib.md5()
with open( filepath, "rb" ) as f:
for chunk in iter( lambda: f.read( BUFFER * hasher.block_size ), b'' ):
hasher.update( chunk )
return hasher.hexdigest()
print (md5sum("./md5sum.py"))
md5となっているところをsha256に変更すればSHA256でも動く
SHA1なら下記のような感じで・・・
import hashlib
BUFFER=4096
def sha1sum( filepath ):
hasher = hashlib.sha1()
with open( filepath, "rb" ) as f:
for chunk in iter( lambda: f.read( BUFFER * hasher.block_size ), b'' ):
hasher.update( chunk )
return hasher.hexdigest()
print sha1sum("./sha1sum.py")
ファイルサイズが小さいと、本家sha1sumより2桁くらい遅いけどファイルが300Mくらいまで大きくなると逆転する。
意外と効率良いのかも?
hashlibが対応している暗号化方式は下記で確認できる。
print hashlib.algorithms