Python md5 哈希不断生成错误的哈希

问题描述

我正在使用在线 md5 生成器来获取“足球”的哈希值。当 Python 在提示符下转换我的输入“足球”时,它会生成不同的哈希值。然后它从我列表中的“足球”这个词生成一个完全不同的哈希。所以在比较它们时没有匹配。我在不同的在线 md5 生成器中对“足球”一词进行了哈希处理,并得到了相同的结果。只有在 Python 中,我才会不断得到不同的结果。感谢您的帮助。

import hashlib


def dictionary_attack(password_hash):

    dictionary = ['letmein','password','12345','football']

    password_found = None

    for dictionary_value in dictionary:
        temp_value = hashlib.md5('dictionary_value'.encode('utf-8'))
        hashed_value = temp_value.hexdigest()

        if hashed_value == password_hash:
            password_found = True
            recovered_password = dictionary_value

    if password_found == True:
        print(f'Found match for hashed value: {password_hash}')
        print(f'Password recovered: {recovered_password}')
    else:
        print(f'password not found')


def main():
    objhash = input('Enter value: ')
    hashobj = hashlib.md5('objhash'.encode('utf-8'))
    password_hash = hashobj.hexdigest()
    dictionary_attack(password_hash)

 if __name__ == '__main__':
    main()

解决方法

您不是在计算 "football" 的哈希值。您正在计算字符串 "dictionary_value" 的哈希值。

换行

temp_value = hashlib.md5('dictionary_value'.encode('utf-8'))

dictionary_attack

temp_value = hashlib.md5(dictionary_value.encode('utf-8'))

同样,在main中,更改

hashobj = hashlib.md5('objhash'.encode('utf-8'))

hashobj = hashlib.md5(objhash.encode('utf-8'))