littlebot
Published on 2025-04-16 / 0 Visits
0

【源码】基于RandomX算法的加密哈希生成器

项目简介

RandomX是一种基于内存硬度的加密哈希生成算法,专为通用CPU设计。它借助随机代码执行和多种内存硬技术,最大程度降低了专用硬件(如ASIC)的效率优势,主要用于Monero等加密货币的挖矿和验证。

项目的主要特性和功能

  1. 随机代码执行:利用虚拟机执行由整数运算、浮点运算和分支指令组成的随机生成程序。
  2. 内存硬技术:采用多种内存硬技术,保证算法在通用CPU上高效执行,同时限制专用硬件的优势。
  3. 两种操作模式
    • 快速模式:需2080 MiB共享内存,适用于挖矿。
    • 轻量模式:仅需256 MiB共享内存,适用于验证,但运行速度较慢。
  4. 多平台支持:支持x86 - 64、ARM64等多种架构,包含JIT编译器以优化性能。
  5. 安全性:经过多次独立安全审计,未发现关键漏洞。

安装使用步骤

前提条件

  • 已下载本项目的源码文件。
  • 安装了CMake(最低版本2.8.7)和GCC(最低版本4.8,推荐7+)。

构建步骤

  1. 复制仓库bash cd RandomX
  2. 创建构建目录并配置bash mkdir build && cd build cmake -DARCH=native ..
  3. 编译bash make
  4. 运行测试bash ./randomx-tests
  5. 运行基准测试bash ./randomx-benchmark

使用示例

以下是一个简单的使用示例,展示如何使用RandomX进行哈希计算: ```c

include "../randomx.h"

include

int main() { const char myKey = "RandomX example key"; const char myInput = "RandomX example input"; char hash[RANDOMX_HASH_SIZE];

uint32_t flags = randomx_get_flags();
randomx_cache *cache = randomx_alloc_cache(flags);
randomx_init_cache(cache, myKey, strlen(myKey));
randomx_vm *vm = randomx_create_vm(flags, cache, NULL);

randomx_calculate_hash(vm, myInput, strlen(myInput), hash);

randomx_destroy_vm(vm);
randomx_release_cache(cache);

for (int i = 0; i < RANDOMX_HASH_SIZE; ++i) {
    printf("%02x", (unsigned char)hash[i]);
}
printf("\n");
return 0;

} ```

配置和优化

  • 配置标志:通过randomx_get_flags()获取配置标志,可选择是否使用JIT编译、硬件AES加速等。
  • 大页内存:在支持的操作系统上,可使用大页内存以提高性能。
  • 多线程支持:RandomX支持多线程挖矿和验证,可通过配置线程数来优化性能。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】