简单 Python 查询 - MD5 散列

Simple Python inquiry - MD5 hashing

我正在尝试编写一些 python 脚本来散列一些单词。我正在使用 hashcat 来验证我的输出,但出了点问题,这应该是一个非常简单的过程。但我无法确定我做错了什么。只有我的输出的最后一个散列被正确散列。在示例文件中使用“123456”作为 5 行的测试时,我得到以下输出:

f447b20a7fcbf53a5d5be013ea0b15af

f447b20a7fcbf53a5d5be013ea0b15af

f447b20a7fcbf53a5d5be013ea0b15af

f447b20a7fcbf53a5d5be013ea0b15af

e10adc3949ba59abbe56e057f20f883e

谁能指出我方法的错误。将不胜感激。

import hashlib


my_file = open("sample.txt" , "r")

for line in my_file:
    try:
        hash_object = hashlib.md5(line)
        print(hash_object.hexdigest())

    except:
        print "Error"

my_file.close()

前四行的哈希值不同,因为您在 MD5 哈希计算中包含了回车 return。最后一行没有这个回车 return,因此 return 是一个不同的值。只需使用 strip() 删除回车符 return,您将获得所有五行的相同散列:

import hashlib


my_file = open("sample.txt" , "r")

for line in my_file:
    try:
        hash_object = hashlib.md5(line.strip())
        print(hash_object.hexdigest())

    except:
        print "Error"

my_file.close()

这给出了输出:

e10adc3949ba59abbe56e057f20f883e
e10adc3949ba59abbe56e057f20f883e
e10adc3949ba59abbe56e057f20f883e
e10adc3949ba59abbe56e057f20f883e
e10adc3949ba59abbe56e057f20f883e

您的代码存在的问题是您正在散列整行,即最后包含“\n”的“123456\n”。

最后一行不包含 '\n' 这就是为什么它的散列与“123456”的散列相匹配的原因

尝试 trim 散列之前的行,您就可以开始了。

hash_object = hashlib.md5(line) 更改为 hash_object = hashlib.md5(line.strip())