【发布时间】:2009-07-09 10:33:02
【问题描述】:
我想为给定的文件列表生成并存储一个 CRC(或类似的)值,以便以后用作比较。编写一个函数来执行此操作很简单,但是在 Python 库中是否有更标准的方法来执行此操作?
生成的值不需要符合任何特定标准。
【问题讨论】:
标签: python file md5 crc hashlib
我想为给定的文件列表生成并存储一个 CRC(或类似的)值,以便以后用作比较。编写一个函数来执行此操作很简单,但是在 Python 库中是否有更标准的方法来执行此操作?
生成的值不需要符合任何特定标准。
【问题讨论】:
标签: python file md5 crc hashlib
推荐hashlib,它为许多不同的安全哈希和消息摘要算法实现了一个通用接口。包括 FIPS 安全散列算法 SHA1 和 MD5。 演示代码:
import hashlib
m = hashlib.md5()
for line in open('data.txt', 'rb'):
m.update(line)
print m.hexdigest()
##ouput
1ab8ad413648c44aa9b90ce5abe50eea
【讨论】:
for line in open() 可能(尝试)从二进制文件返回相当长的“行”。使用block = f.read(BLOCKSIZE); m.update(block) 来实现可预测和安全的内存使用可能是个好主意。
如果您不需要单向安全性,您也可以使用zlib.crc32 或zlib.adler32,如here 所述。
【讨论】: