比较字符串循环Python

2024-09-27 09:30:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个循环来比较我已经创建的列表中的字符串。这个列表是密码列表,同样的密码用md5散列。我有一个函数可以进行哈希运算,还有一个函数可以打印出两个密码的列表。新函数“findmd5”应该将密码列表的每个md5加密值与传入的加密字符串进行比较pass2check”是我在循环中尝试使用的一个预先确定的字符串,它的md5值应该返回密码“football”。我的新函数中的代码非常不完整,因为我在接下来的步骤中迷失了方向。。你知道吗

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 ()

Tags: key函数字符串in密码列表stringdef
2条回答

你可以试试这个():

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 ()

这将打印所有有效的解决方案

相关问题 更多 >

    热门问题