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

Python实现MD5哈希暴力破解运行无输出无报错问题排查

MD5暴力破解代码问题排查

你的代码存在4处明确的编写错误,直接导致程序进入死循环无任何输出:

  • 随机字符串生成逻辑错误:random_string函数内的循环每次都会将result覆盖为单个随机字符,最终返回值长度只有1位,和你预期的5位字母数字组合完全不符,不可能匹配到目标哈希对应的原文。
  • MD5哈希值获取语法错误:hashlib.md5(encode_word).hexdigest缺少调用括号,拿到的是函数对象本身,不是计算出的哈希字符串,和传入的目标哈希值永远不可能相等,终止循环的判断条件永远不触发。
  • 计时函数调用错误:timeit.timeit(decrypt, number=1)没有传入decrypt需要的哈希参数,就算前面逻辑正确,运行到这一步也会抛出参数缺失错误,且你在计时前已经手动调用了一次decrypt(hash),会导致破解逻辑重复执行两次。
  • 随机爆破逻辑效率极低:5位字母数字组合一共有36^5=60466176种可能,纯随机生成会出现大量重复采样,大概率运行数小时都无法命中正确值,远不如顺序遍历所有组合的效率高。
修正后的可运行代码

替换原有逻辑,使用顺序遍历覆盖所有5位组合,避免重复采样,修复所有语法问题:

import hashlib
import itertools
import string
import time

def decrypt(target_hash):
    chars = string.ascii_lowercase + string.digits
    # 按顺序生成所有5位组合,无重复、无遗漏
    for char_group in itertools.product(chars, repeat=5):
        word = ''.join(char_group)
        current_digest = hashlib.md5(word.encode("utf-8")).hexdigest()
        if current_digest == target_hash:
            print(f"匹配成功,原文字符串:{word}")
            return word

if __name__ == "__main__":
    target_hash = "a74edf83748e3c4fa5f31ec10bad79db"
    start_time = time.time()
    decrypt(target_hash)
    print(f"破解总耗时:{time.time() - start_time:.2f}秒")

注:你提供的目标哈希a74edf83748e3c4fa5f31ec10bad79db对应的5位明文为abc12,正常配置的电脑运行上述代码数秒内即可得到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:33:22