Python hashlib: вычислить SHA-256 большого файла
Чтобы получить SHA-256 большого файла, читайте его блоками и обновляйте hashlib.sha256. Такой способ не загружает весь файл в память и подходит для сверки контрольных сумм архивов. ????? ??????????? ?????????? ???????? ?????? ??????? ? ????????? ?????? ? ??????? ?????.
Рабочий пример
import hashlib
from pathlib import Path
data128 = b"archive data"
path128 = Path("/tmp/checksum-demo.bin")
path128.write_bytes(data128)
digest128 = hashlib.sha256()
with path128.open("rb") as source:
for chunk128 in iter(lambda: source.read(64 * 1024), b""):
digest128.update(chunk128)
print(digest128.hexdigest()) # 5d7b5313d81195e4caf90aa52719f240eb93d50d2b38288a85ef6724af80c97aХеш вычисляется по исходным байтам, поэтому файл открывают в бинарном режиме. Размер блока влияет только на I/O и память, но не на результат digest.
Частый вопрос
Как проверить SHA-256 в Linux?
Используйте sha256sum файл и сравните полный hexadecimal digest с результатом hashlib. Не сравнивайте только начало строки.