Scallion如何利用GPU加速哈希生成?
TOPIC SOURCE
Scallion:一款基于GPU的Onion哈希生成器
在寻找符合特定前缀的 .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-docker或CUDA_VISIBLE_DEVICES指定 GPU,避免资源争抢。
掌握了显卡的并行特性后,Scallion 能在几乎任何支持 OpenCL 的平台上把“前缀搜索”从苦役变成快节奏的算力游戏——只要显卡在手,.onion 地址的生成便不再遥不可及。

参与讨论
之前用CPU跑过,等了快一天差点睡着😭
AMD卡支持咋样?RX 580能稳跑不?
这玩意吃显存吗?我1060 3G能试试不
太贵了吧这也,电费省了显卡烧了
OpenCL驱动老报错,有没遇到的?
work group size调成256反而慢了,啥情况
Intel核显能不能跑?i5-1240P行不行
hhhaaa 终于不用看CPU转圈圈了
寄存器利用率那块没太看懂,求细说
我拿970跑ab12前缀,花了2分半,正常?
kernel.cl改完要重编译整个项目吗?
说白了就是拿显卡堆算力,但真香😂
GTX 1080真这么猛?1分多钟就出结果?
以前搞过Scallion,确实折腾了好久
OpenCL kernel配置这块有更细的调优建议吗?
@ 酒保林 可以试试调小work group,或者改改kernel里的循环展开次数。