在Python中对列表进行散列和比较
因此,我有一个简单的程序,它将常用密码列表中的所有值进行散列,然后将散列值与给定的散列值进行比较。然后破解密码 但是它似乎不起作用,因为在Python中对列表进行散列和比较,python,python-3.x,Python,Python 3.x,因此,我有一个简单的程序,它将常用密码列表中的所有值进行散列,然后将散列值与给定的散列值进行比较。然后破解密码 但是它似乎不起作用,因为passwd\u found仍然是错误的,我相信IF语句不起作用。感谢您的帮助 dic = [] passwd_hash = '4297f44b13955235245b2497399d7a93' passwd_found = False for k in dic: md5hash = hashlib.md5(k.encode('utf-8'))
passwd\u found
仍然是错误的,我相信IF语句不起作用。感谢您的帮助
dic = []
passwd_hash = '4297f44b13955235245b2497399d7a93'
passwd_found = False
for k in dic:
md5hash = hashlib.md5(k.encode('utf-8'))
print(md5hash.hexdigest())
if passwd_hash in md5hash:
passwd_found = True
else:
passwd_found = False
我认为缩进已关闭,您需要在比较中使用
.hexdigest()
,否则会出现错误:
TypeError:类型为“\u hashlib.HASH”的参数不可编辑
我认为缩进已关闭,您需要在比较中使用
.hexdigest()
,否则会出现错误:
TypeError:类型为“\u hashlib.HASH”的参数不可编辑
缩进是否结束?
md5hash
将等于dic
中最后一个字符串的哈希值。这就是你想要的吗?@ChristianDean我想看看passwd_hash是否与列表中的任何哈希值匹配。如果passwd_hash==md5hash:,我会检查,因为md5将始终生成相同长度的哈希(对于几乎任何哈希函数都是如此).是否缩进?md5hash
将等于dic
中最后一个字符串的哈希值。这就是你想要的吗?@ChristianDean我想看看passwd_hash是否与列表中的任何哈希值匹配。如果passwd_hash==md5hash:
,我会检查,因为md5将始终生成相同长度的哈希值(对于几乎任何哈希函数都是如此)。另外,因为你调用了两次hexdigest()
,可能值得同时存储哈希和摘要,以避免重复完成哈希,然后将摘要转换为十六进制表示。此外,如果由于某种原因对哈希进行了填充(因为哈希应始终生成相同数量的字节),则可能应该检查是否存在蛮值相等,或某个片段的蛮值相等。此外,由于调用了hexdigest()
两次,可能值得同时存储哈希和摘要,以避免重复完成哈希,然后将摘要转换为十六进制表示。此外,如果由于某种原因对哈希进行了填充(因为哈希应始终生成相同数量的字节),则可能应该检查蛮值相等或某个片段的蛮值相等。
import hashlib
dic = ['123','1234','12345','123456','1234567','12345678','password', 'qwerty','abc','abcd','abc123','111111','monkey','arsenal','letmein','trustno1','dragon','baseball','superman','iloveyou','starwars','montypython','cheese','123123','football','batman']
passwd_hash = '4297f44b13955235245b2497399d7a93'
passwd_found = False
for k in dic:
md5hash = hashlib.md5(k.encode('utf-8'))
t_hash = md5hash.hexdigest()
print(t_hash)
if passwd_hash in t_hash:
passwd_found = True
else:
passwd_found = False
if passwd_found:
print(k) # 123123 matches