サーバーからダウンロードした 2 つのファイルを検証しようとしています。最初のファイルにはデータが含まれ、2 番目のファイルには MD5 ハッシュ チェックサムが含まれます。
次のように、データ ファイルから hexdigest を返す関数を作成しました。
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を使用しています。助言がありますか?
ありがとう。