【问题标题】:Simple Python inquiry - MD5 hashing简单的 Python 查询 - MD5 哈希
【发布时间】:2016-02-17 19:48:30
【问题描述】:

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

【问题讨论】:

  • 如果123456的MD5和123456\n的另一个MD5。

标签: python encryption hash md5 sha1


【解决方案1】:

前四行的哈希值不同,因为您在 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

【讨论】:

    【解决方案2】:

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

    最后一行不包含'\n',这就是为什么它的哈希与“123456”的哈希匹配

    尝试在散列之前修剪线条,一切顺利。

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

    【讨论】:

    • 那么就跟剥线一样简单?愚蠢的我……我从来没有想过。谢谢。
    • 这并不傻,但警惕的眼睛应该会发现这些错误。快乐编码。 :)
    猜你喜欢
    • 2021-09-21
    • 2011-12-14
    • 2015-07-21
    • 2019-04-24
    • 2012-08-17
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多