2
압축 해제하지 않고 zip 파일의 내용에 대한 CRC32, MD5 및 SHA1을 계산해야합니다.파이썬에서 압축 해제없이 zip 콘텐츠의 CRC32, MD5 및 SHA1을 계산하십시오.
CRC32 :
import zlib
zip_name = "test.zip"
def Crc32Hasher(file_path):
buf_size = 65536
crc32 = 0
with open(file_path, 'rb') as f:
while True:
data = f.read(buf_size)
if not data:
break
crc32 = zlib.crc32(data, crc32)
return format(crc32 & 0xFFFFFFFF, '08x')
print(Crc32Hasher(zip_name))
SHA1 : (유사 MD5)
import hashlib
zip_name = "test.zip"
def Sha1Hasher(file_path):
buf_size = 65536
sha1 = hashlib.sha1()
with open(file_path, 'rb') as f:
while True:
data = f.read(buf_size)
if not data:
break
sha1.update(data)
return format(sha1.hexdigest())
print(Sha1Hasher(zip_name))
지금까지 내가 zip 파일 자체, 예를 들어, 이러한 계산 방법 발견
zip 파일의 내용에 대해서는 계산할 필요없이 직접 zip 파일에서 CRC32를 읽을 수 있습니다. 그것은 다음과 같은 : 우편 내용의
읽기 CRC32 :
import zipfile
zip_name = "test.zip"
if zip_name.lower().endswith(('.zip')):
z = zipfile.ZipFile(zip_name, "r")
for info in z.infolist():
print(info.filename,
format(info.CRC & 0xFFFFFFFF, '08x'))
하지만 먼저 압축을 해제하지 않고 압축 파일의 내용의 SHA1 (또는 MD5)를 계산하는 방법을 알아낼 수 없었다. 그게 가능할까요?
덕분에 우편 번호 : 추가 종속성, 많은 아카이브 형식
기본
을 지원합니다. 그 일을하는 가장 메모리 효율적인 방법은 무엇입니까? – paradadfzipfile
@paradadf가 답변을 업데이트했습니다. – Marat