我想检查下载的zip包的真实性。是否足以只创建zip包的校验和并在本地检查?我是否需要创建包含的每个文件的校验和?
m = hashlib.md5()
file = io.FileIO('test.zip','r')
bytes = file.read(1024)
while(bytes != b''):
m.update(bytes)
bytes = file.read(1024)
file.close()
答案 0 :(得分:2)
我假设您质疑MD5 哈希的范围,而不是校验和(两个非常不同的东西)。因为ZIP是一种无损压缩算法,所以取整个ZIP存档的哈希值(并将其与预期值进行检查)应提供相同的真实性"信息,单独检查每个未压缩的内部文件的哈希值。如果ZIP存档哈希与预期值匹配,则您甚至不必担心校验和值。哈希是一种比校验和更强大的机制。
仅作为散列函数的一个示例,每个对象(即文件)由Git source control system中其内容的SHA-1散列标识。这是Git考虑查看文件是否被更改的唯一机制。
答案 1 :(得分:0)
ZIP文件格式已包含各个文件的校验和。