Python3でファイルのメッセージダイジェストを求める方法を紹介します。ここではSHA256を例にします。
python3.11以降の場合、hashlib.file_digest
を利用します。
import hashlib
with open('INPUT.txt', 'rb') as f:
digest = hashlib.file_digest(f, "sha256")
print(digest.hexdigest())
#=> 6f67ea379608add8b4f3c0a3c95c0e70ab2752405de7c69c152faabd5870305e
それ以前のバージョンの場合は、ファイルを自前で読み込む必要があります。
まずファイル内容をすべてメモリ上に展開してよい場合は以下のようなコードになります。
import hashlib
with open('INPUT.txt', 'rb') as f:
digest = hashlib.sha256(f.read())
print(digest.hexdigest())
#=> 6f67ea379608add8b4f3c0a3c95c0e70ab2752405de7c69c152faabd5870305e
ファイルを少しずつ読み込みながら、メッセージダイジェストを求めることも可能です。
import hashlib
digest = hashlib.sha256()
with open('INPUT.txt', 'rb') as f:
while b := f.read(1024):
digest.update(b)
print(digest.hexdigest())
#=> 6f67ea379608add8b4f3c0a3c95c0e70ab2752405de7c69c152faabd5870305e
環境情報
docker run -it --rm -v .:/work -w /work python:3.12 python3 main.py