我正在尝试构建一个MD5'cracker',并使用两个不同的脚本来实现它,第一个脚本从单词列表(巨大的单词)中获取单词列表列表.txt),然后将它们散列并写入另一个文件(WordsHash.txt文件). 然后,第二种方法获取一个用户定义的单词,对其进行哈希运算,并将其与中的哈希值进行比较WordHash.txt文件,但对于“相同”字符串,我得到了不同的哈希值。你知道吗
第一个脚本:
import hashlib
hashes = open("WordsHash.txt", 'w')
m = hashlib.md5()
with open("huge word list.txt") as words:
words = words.readlines()
print "processing..."
for line in words:
line = line.replace("\n", "")
m.update(line)
word_hash = m.hexdigest()
line = "%s %s\n" % (line, word_hash)
hashes.write(line)
print "done."
hashes.close()
第二个剧本:
import hashlib
f = open('WordsHash.txt')
p = '\'due'
password = hashlib.md5()
password.update(p)
password = password.hexdigest()
print "%r %r" %(password, p)
for line in f:
lines = line.split(" ")
lines[1] = lines[1].replace("\n", "")
word_hash = lines[1]
if word_hash == password:
print "found it, %s" % line
exit(0)
您需要为每个要散列的对象创建一个新的md5对象。否则,在计算后续散列时,将包含前面的散列工作。你知道吗
给定“apple”、“banana”、“pear”列表,处理器将给出“apple”、“applebanana”和“applebanaapear”的哈希值。你知道吗
在散列之前去掉单词,而不是替换。你知道吗
忽略给定的两段代码是相同的事实,如果要对新字符串进行哈希运算,则必须创建一个新的
hashlib.md5
,否则更新将被添加到现有的哈希运算中。你知道吗相关问题 更多 >
编程相关推荐