我正在尝试验证从服务器下载的两个文件。第一个包含数据,第二个文件包含 MD5 哈希校验和。
我创建了一个从数据文件返回十六进制摘要的函数,如下所示:
def md5(fileName):
"""Compute md5 hash of the specified file"""
try:
fileHandle = open(fileName, "rb")
except IOError:
print ("Unable to open the file in readmode: [0]", fileName)
return
m5Hash = hashlib.md5()
while True:
data = fileHandle.read(8192)
if not data:
break
m5Hash.update(data)
fileHandle.close()
return m5Hash.hexdigest()
我使用以下内容比较文件:
file = "/Volumes/Mac/dataFile.tbz"
fileHash = md5(file)
hashFile = "/Volumes/Mac/hashFile.tbz.md5"
fileHandle = open(hashFile, "rb")
fileHandleData = fileHandle.read()
if fileHash == fileHandleData:
print ("Good")
else:
print ("Bad")
文件比较失败,所以我打印了两者fileHash
,fileHandleData
我得到以下信息:
[0] b'MD5 (hashFile.tbz) = b60d684ab4a2570253961c2c2ad7b14c\n'
[0] b60d684ab4a2570253961c2c2ad7b14c
从上面的输出来看,哈希值是相同的。为什么哈希比较失败?我是 python 新手,正在使用 python 3.2。有什么建议么?
谢谢。