早上好, 所以,我从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())
我需要遵循一些要求来构建此哈希,例如:
答案 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)
。