比较字符串循环Python
我正在尝试创建一个循环来比较我已经创建的列表中的字符串。该列表包含密码,并且使用md5散列相同的密码。我有一个函数进行哈希运算,另一个函数打印两个密码的列表。新函数findmd5应该将密码列表的每个md5加密值与传入的加密字符串进行比较。pass2check是我试图在循环中使用的一个预先确定的字符串,它的md5值应该返回密码。我的新函数中的代码非常不完整,因为我在接下来的步骤中迷失了方向比较字符串循环Python,python,python-3.x,loops,hash,Python,Python 3.x,Loops,Hash,我正在尝试创建一个循环来比较我已经创建的列表中的字符串。该列表包含密码,并且使用md5散列相同的密码。我有一个函数进行哈希运算,另一个函数打印两个密码的列表。新函数findmd5应该将密码列表的每个md5加密值与传入的加密字符串进行比较。pass2check是我试图在循环中使用的一个预先确定的字符串,它的md5值应该返回密码。我的新函数中的代码非常不完整,因为我在接下来的步骤中迷失了方向 import hashlib passwordlist = ["password","123456","12
import hashlib
passwordlist = ["password","123456","12345678","1234","qwerty","12345",
"baseball","football","letmein","monkey","abc123","mustang","michael"]
def makemd5(key_string):
new_key_string = key_string.encode('utf-8')
return (hashlib.md5 ( new_key_string ).hexdigest())
def createmd5list(passwordlist):
for passlist in passwordlist:
hashlist = makemd5(passlist)
print (passlist,",",hashlist)
def findmd5(pass2check):
for line in open(passwordlist + hashlist):
if pass2check in line:
print(True)
else:
print(False)
def main():
pass2check = "37b4e2d82900d5e94b8da524fbeb33c0"
main ()
您可以尝试以下方法:
import hashlib
passwordlist = ["password","123456","12345678","1234","qwerty","12345",
"baseball","football","letmein","monkey","abc123","mustang","michael"]
def listOfHashs():
return [hashlib.md5(item.encode('utf-8')).hexdigest() for item in passwordlist]
def main():
pass2check = "37b4e2d82900d5e94b8da524fbeb33c0"
index = listOfHashs().index(pass2check)
print(passwordlist[index] if index >= 0 else "Hash not found !")
main()
在此版本中,我尝试修改您的代码:
import hashlib
passwordlist = ["password","123456","12345678","1234","qwerty","12345",
"baseball","football","letmein","monkey","abc123","mustang","michael"]
def makemd5(key_string):
new_key_string = key_string.encode('utf-8')
return (hashlib.md5 ( new_key_string ).hexdigest())
def createmd5list(passwordlist):
hashlist = []
for passlist in passwordlist:
hashlist += [makemd5(passlist)]
return hashlist
def findmd5(pass2check):
for index, line in enumerate(createmd5list(passwordlist)):
if pass2check in line:
return index
return -1
def main():
pass2check = "37b4e2d82900d5e94b8da524fbeb33c0"
index = findmd5(pass2check)
if index >= 0:
print passwordlist[index]
else:
print "Hash not found !"
main()
您不需要创建哈希密码列表。相反,您在列表中构建摘要和过滤器,最终的列表只包含有效的解决方案 重新编写自己的代码,可能看起来像
import hashlib
passwordlist = ["password","123456","12345678","1234","qwerty","12345",
"baseball","football","letmein","monkey","abc123","mustang","michael"]
def findmd5(pass2check):
result = [password for password in passwordlist
if hashlib.md5(password).hexdigest() == pass2check
]
if len(result):
print("The answer is")
for password in result:
print(password)
else:
print("Password not found")
def main():
pass2check = "37b4e2d82900d5e94b8da524fbeb33c0"
findmd5(pass2check)
main ()
这将打印所有有效的解决方案欢迎使用StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。StackOverflow不是一种编码或教程服务。特别是,您的代码不会产生输出,也不会产生错误。我迷路不是一个问题规范;相反,它表明您需要的是堆栈溢出以外的资源。您的主程序不调用任何函数。你怎么知道其他的工作?findmd5需要他们提供什么数据?我们真的没有办法给你StackOverflow级别的帮助,而不做你应该在发布中做的工作。