Python比较md5哈希

2024-04-29 14:10:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用stackoverflow上找到的以下代码,该代码建议是获取文本文件内容的md5哈希值并与从http://www.miraclesalad.com/webtools/md5.php获得的生成的md5哈希值进行比较的有效方法

但是。。它没有返回相同的md5哈希值,我不确定哪里出了问题。文件内容与我用来生成md5散列的文本完全匹配,因此它应该匹配,但是它没有返回相同的匹配。在

基本上,我想生成一些文本的md5散列,并将其与文本文件的内容进行比较,看看是否匹配。在

def md5Checksum(filePath):
    with open(filePath, 'rb') as fh:
        m = hashlib.md5()
        while True:
            data = fh.read(8192)
            if not data:
                break
            m.update(data)
        return m.hexdigest()

如果我创建一个包含“test”内容的文本文件,同时转到http://www.miraclesalad.com/webtools/md5.php并输入“test”并生成一个哈希,那么比较一下这两者都是不同的。在

不管文件的内容如何,我返回的哈希值总是相同的。在

比较哈希的代码

^{pr2}$

我试过打印数据,两个数据也完全一样。在

来自网站的test的哈希:098f6bc4621d373cade4e832627b4f6

内容为testd41d8cd98f00b204e980998ecf8427e的文本文件的哈希

更新

多亏了亚当·斯密才解决了这个问题。在

这是一个识别错误,因此没有返回更新的hashlib。在


Tags: 文件代码test文本comhttp内容data
3条回答

你确定你的尺寸参数足够大吗(我无法想象它不会,但值得检查)?当我用一个简单的值测试上面的代码并与标准MD5散列(使用miraclesalar或其他方法)进行比较时,我得到了一个正确的响应。回车或特殊字符也会引起一些关注。在

在web生成器和Python中,只有test(后面没有空行)的文本,我得到的MD5哈希为:

098f6bcd4621d373cade4e832627b4f6

如果在之后添加回车符/新行(\n),则会得到:

^{pr2}$

这种差异是由回车/换行类型造成的。DOS/Windows ('\r\n')——Linux ('\n')

http://www.cs.toronto.edu/~krueger/csc209h/tut/line-endings.html

问题可能出在新线上。如果文件以新行"test\n"结尾,MD5哈希将是d8e8fca2dc0f896fd7cb4cb0031ba249。在

无论您是在Windows还是Unix系统上,行尾也可能不同。在

相关问题 更多 >