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