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

时间:2016-12-15 12:57:10

标签: python hash md5

早上好, 所以,我从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())

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

  • 编码规则必须是ISO-8859-1'
  • 所有角色必须是 小写
  • 不得在哈希构建
  • 上考虑新行字符和回车符

4 个答案:

答案 0 :(得分:1)

m.update(b'file')

这一行是问题所在。你在字符串'file'上调用函数表示为字节(例如,参见this question,有关这意味着什么),而不是文件中的数据。

如果用

替换它
m.update(file)

你应该得到你想要的结果(尽管正如DevShark指出的那样,你也应该将该变量的名称改为尚未具有其自身含义的东西)。

答案 1 :(得分:1)

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

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(覆盖内置名称是不好的做法)。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

此代码也适用于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)