Python 中更改 TXT 文件后的新 MD5 哈希

New MD5 hash after changing a TXT file in Python

早上好, 所以,我从一个 TXT 文件创建了一个 MD5 散列。更改文件内容插入新值后,我尝试再次创建 MD5 哈希,但值没有改变。我能做什么?

我的代码:

from hashlib import md5

open_file = open('N0003966.290', 'r', encoding='ISO-8859-1')
file = open_file.read().lower().rstrip('\n\r ').strip('\n\r')

m = md5()
m.update(b'file')
print(m.hexdigest())

我需要遵循一些要求来构建这个哈希,例如:

m.update(b'file')

这一行就是问题所在。您是在以字节表示的字符串 'file' 上调用该函数(例如,请参阅 this question,了解更多关于这意味着什么),而不是在文件中的数据上。

如果将其替换为

m.update(file)

你应该得到你想要的结果(尽管,正如 DevShark 指出的那样,你还应该将该变量的名称更改为它自己没有意义的名称)。

您正在对字符串 'file' 而不是文件内容调用 update。改为这样做:

from hashlib import md5

open_file = open('N0003966.290', 'r', encoding='ISO-8859-1')
file_content = open_file.read().lower().rstrip('\n\r ').strip('\n\r')

m = md5()
m.update(file_content.encode('ISO-8859-1'))
print(m.hexdigest())

另请注意,我将您的变量 file 替换为 file_content(覆盖内置名称是不好的做法)。

m.update(file.encode('ISO-8859-1'))

此代码也适用于 python 2.7。

from hashlib import md5

open_file = open('a.txt', 'r')
file = open_file.read().lower().rstrip('\n\r ').strip('\n\r')

m = md5()
m.update(file)
print(m.hexdigest())

m.update(b'file') 是你出错的地方替换成 m.update(file).