Scallion源代码解析:从RSA密钥生成到SHA-1哈希验证的全流程
Scallion源代码解析:从RSA密钥生成到SHA-1哈希验证的全流程
【免费下载链接】scallionGPU-based Onion Hash generator项目地址: https://gitcode.com/gh_mirrors/sc/scallion
Scallion是一款基于GPU加速的Onion哈希生成工具,通过高效的RSA密钥生成与SHA-1哈希验证流程,帮助用户快速创建符合Tor网络要求的.onion域名。本文将深入解析Scallion源代码中RSA密钥生成、GPG数据包处理及SHA-1哈希计算的核心实现。
一、RSA密钥生成:构建洋葱服务的基础
RSA密钥对是洋葱服务的身份标识,Scallion通过RSAWrapper类实现了完整的密钥生命周期管理。该类封装了OpenSSL的RSA功能,提供从密钥生成、格式转换到GPG兼容性处理的全流程支持。
1.1 密钥生成的核心实现
在RSAWrapper.cs中,GenerateKey方法通过OpenSSL的RSA.GenerateKeys函数生成指定长度的密钥对:
public void GenerateKey(int size, BigNumber exponent) { Rsa.GenerateKeys(size, exponent, null, null); Timestamp = (uint)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds; }默认使用3作为公钥指数(exponent),支持1024/2048/4096等多种密钥长度。生成的密钥包含公钥( modulusn和 exponente)和私钥( private exponentd、素数因子p/q等)组件。
1.2 GPG兼容的密钥格式处理
为支持Tor网络的GPG密钥格式,RSAWrapper实现了完整的GPG v4数据包生成逻辑。通过GPG_pubkey_packet方法构建符合OpenPGP标准的公钥数据包:
private byte[] GPG_pubkey_packet(out int exp_index) { // 数据包格式:版本(0x04) + 时间戳 + 算法类型(0x01=RSA) + MPI格式的n和e // ... 具体实现见RSAWrapper.cs第124-161行 }生成的数据包包含MPI(多精度整数)编码的公钥参数,确保与GPG工具链的兼容性。
二、SHA-1哈希计算:Onion域名的核心验证
Tor网络通过SHA-1哈希公钥DER编码生成16字符的.onion域名。Scallion实现了CPU和GPU双路径的SHA-1计算,兼顾验证准确性和破解效率。
2.1 CPU端SHA-1实现
在RSAWrapper.cs中,get_der_hash方法对RSA公钥的DER编码进行SHA-1哈希:
private byte[] get_der_hash() { var sha1 = new System.Security.Cryptography.SHA1Managed(); return sha1.ComputeHash(this.DER); }公钥DER编码通过Native.i2d_RSAPublicKey从OpenSSL获取,确保与Tor网络的哈希计算标准一致。
2.2 GPU加速的SHA-1实现
为提升暴力破解效率,Scallion在CLRuntime.cs中实现了OpenCL加速的SHA-1计算:
// 初始化SHA1上下文 SHA1 Sha1 = new SHA1(); // 处理每个数据块 Sha1.SHA1_Block(t);SHA1.cs中的SHA1_Block方法完整实现了SHA-1的4轮压缩函数,通过OpenCL内核在GPU上并行执行,大幅提升哈希计算速度。
三、从密钥到Onion域名:完整流程解析
Scallion的核心工作流可概括为以下步骤:
- 密钥生成:通过
RSAWrapper.GenerateKey创建RSA密钥对 - 公钥编码:调用
RSAWrapper.DER属性获取公钥的DER编码 - 哈希计算:使用
get_der_hash生成160位SHA-1哈希 - Base32编码:通过
tobase32str方法将哈希转换为16字符的.onion域名
关键代码路径:RSAWrapper.OnionHash属性
public string OnionHash { get { return tobase32str(this.get_der_hash(), 10); } }四、核心文件与扩展阅读
- RSA密钥管理:scallion/RSAWrapper.cs
- SHA-1算法实现:scallion/SHA1.cs
- GPU加速逻辑:scallion/CLRuntime.cs
- OpenCL内核代码:scallion/kernel.cl
通过上述组件的协同工作,Scallion实现了高效的Onion哈希生成流程。开发者可通过修改CLRuntime.cs中的设备选择逻辑优化GPU利用率,或调整RSAWrapper.cs中的密钥参数满足特定安全需求。
五、使用指南:快速上手Scallion
克隆仓库:
git clone https://gitcode.com/gh_mirrors/sc/scallion编译项目:通过Visual Studio或MSBuild编译
scallion.sln生成Onion哈希:
scallion --threads 4 --gpu 0
Scallion会自动利用GPU加速哈希计算,当找到符合条件的密钥时,会输出完整的GPG私钥和对应的.onion域名。
通过深入理解Scallion的RSA密钥生成与SHA-1哈希验证流程,开发者不仅可以优化现有工具,还能基于其架构扩展支持更复杂的洋葱服务需求,如密钥轮换、多GPU并行计算等高级功能。
【免费下载链接】scallionGPU-based Onion Hash generator项目地址: https://gitcode.com/gh_mirrors/sc/scallion
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
