You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SHA1哈希字典攻击代码调试求助(编程新手)

修复SHA-1字典攻击代码的方案

嘿,作为编程新手能尝试哈希破解已经超棒啦!我看你的代码写到一半断了,这就帮你补全并把关键细节讲清楚,让它能稳稳运行~

完整可运行代码

import hashlib

# 需要破解的SHA-1哈希值(悄悄说:这个对应的明文是"password"哦)
hash_to_crack = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"
# 字典文件路径,注意路径用正斜杠或者双反斜杠都可以
dict_file = "C:/Users/kiran/AppData/Local/Programs/Python/Python37/dictionary.txt"

def main():
    try:
        # 打开字典文件,指定utf-8编码避免乱码问题
        with open(dict_file, 'r', encoding='utf-8') as fileobj:
            # 逐行读取字典,顺便记录行号方便定位
            for line_num, line in enumerate(fileobj, 1):
                # 去掉每行末尾的换行符、空格,不然哈希计算会出错!
                word = line.strip()
                # 把字符串转成字节流,hashlib只认字节
                word_bytes = word.encode('utf-8')
                # 计算当前单词的SHA-1哈希并转成十六进制字符串
                hashed_word = hashlib.sha1(word_bytes).hexdigest()
                # 对比哈希值
                if hashed_word == hash_to_crack:
                    print(f"🎉 找到匹配的密码啦!密码是: {word}")
                    print(f"在字典的第{line_num}行")
                    return  # 找到就直接退出,不用白跑剩下的内容
            # 遍历完字典都没找到的情况
            print("😮‍💨 字典里没有匹配的密码哦,可以换个字典试试")
    except FileNotFoundError:
        print(f"❌ 错误:找不到字典文件,请检查路径是否正确 -> {dict_file}")
    except Exception as e:
        print(f"❌ 发生未知错误:{str(e)}")

if __name__ == "__main__":
    main()

新手必看的关键细节

  • 文件读取坑点:
    • 加encoding='utf-8'是为了避免读取字典时出现中文/特殊字符乱码
    • strip()一定要加!如果字典里的单词末尾带换行符,计算出来的哈希会和目标完全不一样,直接导致匹配失败
  • 哈希计算逻辑:
    • hashlib的哈希函数只能处理字节类型,所以必须用encode('utf-8')把字符串转成字节流
    • hexdigest()会把哈希结果转成人类可读的十六进制字符串,和你要破解的哈希格式一致
  • 错误防护:
    • 捕获FileNotFoundError:防止你写错字典路径时程序直接崩溃,会给出明确提示
    • 通用异常捕获:万一遇到其他奇怪问题(比如字典权限不够),能看到具体错误信息,方便排查
  • 小优化:
    • 用enumerate记录行号,找到密码时能快速定位它在字典里的位置
    • 找到匹配后立刻return,不用继续遍历剩下的字典,节省时间

测试小技巧

你可以先在dictionary.txt里加一行password,运行代码就能立刻看到匹配成功的提示,验证代码是否正常工作~

内容的提问来源于stack exchange,提问作者Kiran Vasu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:28:45