【问题标题】:Search Hashed Password File Python搜索哈希密码文件 Python
【发布时间】:2017-03-28 14:13:30
【问题描述】:

这是学校作业,不是为了个人利益

我正在创建一个脚本,该脚本在一个填充了密码的文件中搜索它的哈希等效项。该文件本身是纯文本密码,我正在使用循环转换为 md5,然后搜索并匹配我预先设置的“testmd5”的值。

我遇到的问题是,它一直返回“未找到”。散列值在文本文件中,所以我猜我没有正确地将纯文本转换为文件中的散列!

import hashlib
testmd5 = "a90f4589534f75e93dbccd20329ed946"

def makemd5(key_string):
    new_keystring=key_string.encode('utf-8')
    return (hashlib.md5( new_keystring ).hexdigest())

def findmd5(makemd5):
    found = False
    with open("passwords.txt", "rt") as in_file:
       text = in_file.readline()
    for text in ("passwords.txt"):
        if makemd5(text) == testmd5:
            print(text)
            found = True
    if found == False:
        print("Not Found")

def main():
    findmd5(makemd5)

main()

任何有关的帮助将不胜感激!

这是我刚学会的读取文件的方法。

with open("test.txt", "rt") as in_file:
    while True:
        text = in_file.readline()
        if not text:
           break
        print(text)

【问题讨论】:

  • 我认为你需要再看看如何读取文件。
  • 检查问题。
  • 不要将代码放入 cmets。使用新代码编辑您的问题。
  • for text in ("passwords.txt") 应该做什么?
  • 我假设 line 会创建用于读取文件中“文本”的变量

标签: python function python-3.x hash


【解决方案1】:

您实际上不是在搜索文件,而是在搜索字符串"passwords.txt"。您还错过了对 readline 的函数调用中的括号,我认为应该是 readlines() 以便您可以迭代行列表:

import hashlib
testmd5 = "a90f4589534f75e93dbccd20329ed946"

def makemd5(key_string):
    new_keystring=key_string.encode("utf-8")
    return (hashlib.md5( new_keystring ).hexdigest())

def findmd5():
    found = False
    with open("passwords.txt", "rt") as in_file:
       full_text = in_file.readlines()
    for text in full_text:
        if makemd5(text) == testmd5:
            print(text)
            found = True
    if found == False:
        print("Not Found")

if __name__ == "__main__":
    findmd5()

似乎也没有必要传递makemd5 函数,所以我删除了它。

与引号保持一致,'utf-8' 使用了单引号,但其他地方使用了双引号。

【讨论】:

  • 我错过了.readline()。您是否建议删除 main() 并将其替换为您拥有的最后一行代码?我没见过以前用过的
  • readline() 只会读取一行,您可能会发现使用readlines() 读取所有行并迭代列表会获得更好的性能。
  • @JamesPi 是的,这是在 python 中编写 main 函数的最佳方式,它允许您在需要时使用与模块相同的代码。 __name__=="__main__" 块中的任何内容仅在“正常”调用脚本时运行,如果将其导入另一个 python 脚本,则不会进行评估。
  • 这似乎是对的,但我仍然收到"Not Found"。您认为这与搜索时没有每行获取一个密码的循环有关吗?有人告诉我这可能是个问题。
  • @JamesPi 没有看到文件很难说,是否可以在问题中添加摘录?
猜你喜欢
  • 2021-02-02
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2023-04-08
  • 2010-09-08
  • 1970-01-01
  • 2015-11-30
  • 2018-01-31
相关资源
最近更新 更多