このBlogは移転しました。今後は aish.dev を御覧ください。

hashlibのハッシュアルゴリズム、計算速度ってどのぐらい差があるの選手権

雑に図ってみた (Python 3.6.4)

対象ファイル: 画像ファイル約20000件(2GB弱)

アルゴリズム 処理時間(秒) ファイル読み込み時間は含まず
md5 2.536
sha1 1.798
sha256 3.873
sha384 2.591
sha512 2.626

まとめ

sha1はええ。md5そんな速くねえ。sha512とそんな変わんねえ。

コード

import hashlib, sys, pathlib, time

sizes = []
times = []

HASH = gatattr(hashlib, sys.argv[1])

def h(b):
    f = time.time()
    h = HASH(b).digest()
    times.append(time.time()-f)
    sizes.append(len(b))

imgs = pathlib.Path(sys.argv[2]).glob("*.jpg")
for i in imgs:
    h(i.read_bytes())

print(len(sizes), sum(sizes), sum(times), sum(times)/len(times))