【问题标题】:Compare Strings Loop Python比较字符串循环 Python
【发布时间】:2017-08-13 12:32:33
【问题描述】:

我正在尝试创建一个循环来比较我已经创建的列表中的字符串。该列表包含密码,并且相同的密码使用 md5 散列。我有一个进行哈希处理的函数,另一个打印出两个密码列表的函数。新函数“findmd5”应该将密码列表的每个 md5 加密值与传入的加密字符串进行比较。“pass2check”是我试图在循环中使用的预定字符串,它的 md5 值应该返回密码“足球”。我的新函数中的代码非常不完整,因为我在接下来要采取的步骤中迷失了......

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

【问题讨论】:

  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。 StackOverflow 不是编码或教程服务。
  • 特别是,您的代码不会产生任何输出和错误。 “我迷路了”不是问题规范;相反,它表明您需要 Stack Overflow 以外的资源。
  • 您的主程序不会调用您的任何函数。你怎么知道其他的工作? findmd5 需要他们提供哪些数据?如果不完成您应该在您的帖子中投入的工作,我们真的无法为您提供 StackOverflow 级别的帮助。

标签: python python-3.x loops hash


【解决方案1】:

你可以试试这个():

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

【讨论】:

    【解决方案2】:

    您不需要创建散列密码列表。相反,您在列表推导中构建摘要和过滤器,最终列表仅包含有效的解决方案。

    重写你自己的代码,它可能看起来像

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多