仅仅创建zip包的校验和而不是每个文件就足够了

时间:2015-06-21 03:36:32

标签: python python-2.7

我想检查下载的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() 

2 个答案:

答案 0 :(得分:2)

我假设您质疑MD5 哈希的范围,而不是校验和(两个非常不同的东西)。因为ZIP是一种无损压缩算法,所以取整个ZIP存档的哈希值(并将其与预期值进行检查)应提供相同的真实性"信息,单独检查每个未压缩的内部文件的哈希值。如果ZIP存档哈希与预期值匹配,则您甚至不必担心校验和值。哈希是一种比校验和更强大的机制。

仅作为散列函数的一个示例,每个对象(即文件)由Git source control system中其内容的SHA-1散列标识。这是Git考虑查看文件是否被更改的唯一机制。

答案 1 :(得分:0)

ZIP文件格式已包含各个文件的校验和。

请参阅does .zip compression internally maintains checksum