我想驗證從服務器下載的兩個文件。第一個包含數據,第二個文件包含MD5散列校驗和。Python中的Python MD5哈希比較3.2
我創建的從數據文件返回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")
文件比較失敗,所以我打印出兩個:
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()
我使用以下比較的文件fileHash
和fileHandleData
,我得到以下內容:
[0] b'MD5 (hashFile.tbz) = b60d684ab4a2570253961c2c2ad7b14c\n'
[0] b60d684ab4a2570253961c2c2ad7b14c
從上面的輸出中,散列值是相同的。爲什麼散列比較失敗?我是新來的python和我使用python 3.2。有什麼建議麼?
謝謝。
你沒有向我們展示你的函數,也沒有顯示你如何打印這些變量。顯然你顯示的值是不同的,但不是什麼類型的(一個是字節串的repr(),另一個是十六進制數據)。你可能想看看http://cfv.sourceforge.net/ – 2011-05-02 05:58:29