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

如何优化碰撞目标SHA1哈希值的暴力破解代码的运行性能?

SHA1哈希碰撞暴力破解代码优化方案

以下是针对你提供的暴力碰撞SHA1代码的可落地优化方法,优化后性能可提升几十到上千倍不等:

  • 砍掉无意义的磁盘IO操作:原代码最大的性能损耗来自循环写入、读取文件,磁盘IO速度远低于内存操作,生成的随机字节完全可以直接在内存中传递计算,不需要写入磁盘,这一项优化就能把速度提升至少100倍以上。
  • 减少重复计算开销:原代码对同一段数据重复计算了3次SHA1、重复做了3次十六进制字符串转换,只需要计算一次SHA1值存到变量复用即可。同时不需要将哈希值转为十六进制字符串比对,直接用digest()方法获取二进制哈希值,提前将目标哈希转为二进制格式做比对,比对速度可提升数倍。
  • 移除高频打印操作:每次循环打印哈希值的控制台IO开销极大,如需要监控进度,可设置每10000次循环打印一次进度即可,日常运行完全可以关闭打印。
  • 替换更快的随机数生成方案:os.urandom是密码学安全的真随机数生成接口,生成速度较慢,暴力碰撞场景不需要高安全性的随机值,可替换为速度更快的伪随机数生成器,还可以批量生成多组待计算的随机字节,减少函数调用开销。
  • 利用多核CPU并行计算:Python默认单进程只能利用一个CPU核心,这类计算密集型任务可以用multiprocessing模块启动多进程,将计算任务拆分到多个核心并行执行,性能可随核心数线性提升。
  • 运行时优化:用PyPy解释器运行代码,比默认CPython对循环逻辑的执行速度高3~5倍;极致性能需求下可调用更底层的SHA1计算库(如OpenSSL原生接口)替代hashlib的默认实现。

优化后单进程示例代码

import hashlib
import os

# 提前把目标哈希转为二进制,避免每次循环转换
TARGET_SHA1 = bytes.fromhex('37fbfdb93e39d41d53270184d050a83a08cb772e')
piece_size = 1024  # 自定义的块大小

counter = 0
while True:
    # 直接在内存生成随机字节,不写盘
    data = os.urandom(piece_size)
    # 只算一次SHA1,直接拿二进制结果比对
    current_sha1 = hashlib.sha1(data).digest()
    if current_sha1 == TARGET_SHA1:
        print("匹配成功!")
        # 匹配到之后再写入文件即可
        with open('./output_file', 'wb') as fout:
            fout.write(data)
        print(f"文件哈希: {current_sha1.hex()}")
        break
    # 每10000次打一次进度,不需要可以直接删除以下三行提升性能
    counter +=1
    if counter % 10000 == 0:
        print(f"已尝试次数:{counter}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:57:00