简单的Python查询 - MD5哈希

时间:2015-11-16 16:23:34

标签: python encryption hash md5 sha1

我正在尝试编写一个小的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()

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您的代码存在的问题是您正在对整行进行哈希处理,即" 123456 \ n"其中包含' \ n'到底。

最后一行不包含' \ n'这就是为什么它的哈希与" 123456"

的哈希匹配

尝试在散列之前修剪线条,你很高兴。

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