Python 中的十六进制文摘

Hexdigest in Python

我检查两个相同CSV文件的Hexdigest md5值有何不同。这两个 CSV 文件的区别在于一个是制表符分隔,另一个是逗号分隔,其他值相同。

f1 = open(r'D:\Temporary\New File.csv',mode='r')
f2 = open(r'D:\Temporary\Old File.csv',mode='r')
print hashlib.md5(t1).hexdigest(),'    ',hashlib.md5(t2).hexdigest()
if hashlib.md5(t1).hexdigest()== hashlib.md5(t2).hexdigest():
    print "Match"
else:
    print "Not Match"

输出显示:

a4b2720cafdcb859e7ef07a7a3564ba3      237a5c28b890f94636035482a363853a
Not Match

另一方面,这段代码给出了正确的输出,我在其中引入了 read() 函数,然后获取了 md5 摘要。现在键 匹配 .

f1 = open(r'D:\Temporary\New File.csv',mode='r')
f2 = open(r'D:\Temporary\Old File.csv',mode='r')
print f1.read()
print f2.read()
print hashlib.md5(t1).hexdigest(),'    ',hashlib.md5(t2).hexdigest()
if hashlib.md5(t1).hexdigest()== hashlib.md5(t2).hexdigest():
    print "Match"
else:
    print "Not Match"

现在,输出是:

Ultimator Start Code Start Count    
Ultimator,Start Code,Start Count,,,,
d41d8cd98f00b204e9800998ecf8427e      d41d8cd98f00b204e9800998ecf8427e
Match

MD5 是一种加密散列函数,适用于文件的原始数据。如果两个 CSV 文件具有相同的内容(根据您的考虑)只是使用不同的分隔符,则原始数据不同。这就是为什么 MD5 十六进制值也必须不同的原因。

之前调用file.read时,本文件的位置指针会在文件末尾,在returns后再次调用file.read '':

>>> hashlib.md5('').hexdigest()
'd41d8cd98f00b204e9800998ecf8427e'