python - 为什么文件中单词的 md5 散列与字符串的散列不匹配?

标签 python file hash md5

我正在尝试创建一个 python 程序,该程序将从字典中读取单词,创建 md5 哈希并将其与给定的哈希进行比较。

当我尝试比较尚未从文件中读取的单词的两个哈希值时,一切正常:

if hashlib.md5(b"string").hexdigest() == "b45cffe084dd3d20d928bee85e7b0f21":
    print("Equal!")

但是当我从文件中逐行读取单词时,单词的散列不同。代码如下所示:

f = open('short.txt', 'r')

stringHash = 'b45cffe084dd3d20d928bee85e7b0f21'

for line in f:

   if stringHash == hashlib.md5(line.encode('utf_8')).hexdigest():
       print("Found it! Password: %s" % line)

感谢您的帮助和解释。

最佳答案

逐行文件迭代器产生整行包括行终止符

在您的代码中,您包括该行的行终止符。

line.encode('utf_8').rstrip() 将产生正确的结果。

如果您的字符串(故意)以空格结尾,

rstrip() 将失败。在这种情况下,只需执行以下操作:

line.encode('utf_8').rstrip('\r\n')

如果文件在 Unix 上以 text 模式打开,可能的 \r(回车)可能会保留(在 windows 上不是问题)

(and rstrip 不删除 '\r\n' 字符串,但每个 \r 或/和 n 包含在行尾,它不像 str.split)

关于python - 为什么文件中单词的 md5 散列与字符串的散列不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41751690/

相关文章:

python - 从命令行调用 views.py 中的函数 (django)

Python 值错误 : XPath error: Unregistered function

c# - 使用 RSACryptoServiceProvider 签名的速度

security - 公开暴露盐是否可以接受?

python - 如何仅抓取特定单词

python - 返回元组的函数给出 TypeError : 'NoneType' object is not iterable

php - 使用 csv 文件更新 mysql 表。我需要调试器

php - 如何在 php 中打开 linux 文件?

c - Xcode,如何一次运行一个文件?

c++ - 逐行散列文件时错误的 md5 散列值