Scallion如何利用GPU加速哈希生成?

16 人参与

在寻找符合特定前缀的 .onion 地址时,传统的 CPU 暴力搜索往往要耗费数小时甚至数天。Scallion 通过 OpenCL 将核心的 SHA‑1 哈希运算搬到显卡上,让每秒可计算的哈希数量从十几万跃升至数千甚至上万万。

GPU 加速的技术路径

Scallion 的工作流分为三段:先在 CPU 上生成 RSA 私钥,再把公模和指数打包发送至 GPU,最后在显卡上并行执行 SHA‑1 核心函数。OpenCL kernel 采用 128 线程的工作组大小,针对不同显卡的 SIMD 宽度进行微调,以最大化寄存器利用率。每一次迭代,GPU 只负责哈希,比起 CPU 的顺序计算,吞吐量提升近 200 倍。

常见显卡的哈希速率(MH/s)

  • NVIDIA GTX 970 ≈ 2 350 MH/s
  • NVIDIA GTX 1080 ≈ 5 760 MH/s
  • AMD Radeon RX 580 ≈ 3 180 MH/s
  • Intel i5‑5200U ≈ 118 MH/s(仅 CPU)

实战示例:用 GTX 1080 生成前缀

假设目标是寻找以 ab12 开头的 .onion 地址,执行以下命令即可让显卡全速运转:

mono scallion/bin/Debug/scallion.exe -d 0 "ab12$"

在一台装配 GTX 1080 的工作站上,Scallion 在约 1 分 20 秒内完成 7 200 MH 的哈希计算,成功捕获首个符合前缀的地址。相比手动 CPU 暴力,需要的时间从数小时降至几分钟,省下的咖啡费和电费不容小觑。

性能调优小贴士

  • 确保显卡驱动与 OpenCL 运行时匹配,旧版驱动常导致 kernel 编译失败。
  • 根据显卡模型微调 work group size(如 64、128、256),可在 kernel.cl 中直接修改。
  • 使用 --profile 参数开启统计,观察写入/读取缓冲区的瓶颈所在。
  • 在多卡环境下使用 nvidia-dockerCUDA_VISIBLE_DEVICES 指定 GPU,避免资源争抢。

掌握了显卡的并行特性后,Scallion 能在几乎任何支持 OpenCL 的平台上把“前缀搜索”从苦役变成快节奏的算力游戏——只要显卡在手,.onion 地址的生成便不再遥不可及。

参与讨论

16 条评论
  • 柚子绿茶

    之前用CPU跑过,等了快一天差点睡着😭

    回复
  • 迅捷的羚羊

    AMD卡支持咋样?RX 580能稳跑不?

    回复
  • 孤独的旅行者

    这玩意吃显存吗?我1060 3G能试试不

    回复
  • 隐身模式常驻用户

    太贵了吧这也,电费省了显卡烧了

    回复
  • 竹编篮

    OpenCL驱动老报错,有没遇到的?

    回复
  • 雁荡飞瀑

    work group size调成256反而慢了,啥情况

    回复
  • 糖豆小蜜蜂

    Intel核显能不能跑?i5-1240P行不行

    回复
  • GrimoireGhost

    hhhaaa 终于不用看CPU转圈圈了

    回复
  • NovaFrost

    寄存器利用率那块没太看懂,求细说

    回复
  • StarlessHarbinger

    我拿970跑ab12前缀,花了2分半,正常?

    回复
  • 星星狐

    kernel.cl改完要重编译整个项目吗?

    回复
  • 好奇的猴

    说白了就是拿显卡堆算力,但真香😂

    回复
  • CosmosWarden

    GTX 1080真这么猛?1分多钟就出结果?

    回复
  • 甜橙小精灵

    以前搞过Scallion,确实折腾了好久

    回复
  • 酒保林

    OpenCL kernel配置这块有更细的调优建议吗?

    回复
    1. 枫少@KillBoy (作者)

      @ 酒保林 可以试试调小work group,或者改改kernel里的循环展开次数。

      回复