Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2个脚本返回2个不同的哈希值,我认为是同一个字符串_Python_Python 2.7 - Fatal编程技术网

Python 2个脚本返回2个不同的哈希值,我认为是同一个字符串

Python 2个脚本返回2个不同的哈希值,我认为是同一个字符串,python,python-2.7,Python,Python 2.7,我正在尝试构建一个MD5“cracker”,并使用两个不同的脚本来实现它,第一个脚本从一个单词列表(巨大的单词列表.txt)中获取一个单词列表,然后将它们散列并写入另一个文件(WordsHash.txt)。第二种方法是获取一个用户定义的单词,对其进行散列,并将其与WordHash.txt中的散列进行比较,但我得到的是“相同”字符串的不同散列 第一个脚本: import hashlib hashes = open("WordsHash.txt", 'w') m = hashlib.md5()

我正在尝试构建一个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对象。否则,在计算后续散列时将包括前面的散列工作


给定“苹果”、“香蕉”、“梨”列表,您的处理器将给出“苹果”、“applebanana”和“AppleBanaapear”的哈希值。

您需要为每个要哈希的对象创建一个新的md5对象。否则,在计算后续散列时将包括前面的散列工作


给定“苹果”、“香蕉”、“梨”列表,处理器将为“苹果”、“applebanana”和“AppleBanaapear”提供哈希值。

忽略您提供的两段代码相同的事实,如果要对新字符串进行哈希,则必须创建一个新的
hashlib.md5
,否则,更新将被添加到现有哈希中。

忽略您提供的两段代码相同的事实,如果要哈希新字符串,必须创建一个新的
hashlib.md5
,否则,更新将被添加到现有哈希中。

在对单词进行哈希处理之前将其去除,而不是进行替换

line = line.strip()

在对单词进行哈希运算之前,先将其去掉,而不是进行替换

line = line.strip()

strip()的作用不仅仅是替换\n请求,但告诉询问者无条件地剥离并不一定正确。根据我的经验,在散列单词时,通常希望剥离输入以避免常见错误。大多数人不打算在单词前后加空格。这可以防止“word”和“word”进行不同的哈希运算。strip()的作用不仅仅是替换\n sure,但告诉询问者无条件地进行strip并不一定正确。根据我的经验,在对单词进行哈希运算时,通常希望剥离输入以避免常见错误。大多数人不打算在单词前后加空格。这可以防止“word”和“word”进行不同的散列。