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

如何实现SHA256迭代哈希?Electrum钱包种子验证需求

在Bash中实现100000次SHA256迭代哈希(Electrum种子派生验证)

问题根源

你之前用嵌套脚本(如hash10times、hash100times)的方式会导致多层进程嵌套调用,系统进程表快速被占满,最终触发fork错误。直接用单循环替代嵌套调用,就能避免这个问题。

方案一:Bash实现(流式处理,避免二进制变量截断)

这个方案通过管道流式传递数据,避免bash变量无法处理null字节的问题,同时用单循环替代嵌套调用:

# 将十六进制种子转为二进制,然后执行100000次SHA256迭代哈希,最后转十六进制输出
echo 'AABBCCDDEEFF1122' | xxd -r -p | \
    (for ((i=0; i<100000; i++)); do
        openssl dgst -sha256 -binary
    done) | xxd -p

说明:

  • xxd -r -p:把十六进制字符串转为原始二进制数据
  • openssl dgst -sha256 -binary:计算SHA256哈希并输出二进制结果
  • 循环执行100000次,每次将上一次的哈希结果作为下一次的输入
  • 最后用xxd -p把最终二进制哈希转为十六进制,方便后续验证

注意:

Bash方案需要频繁调用openssl进程,10万次迭代可能需要数分钟才能完成,适合对速度要求不高的验证场景。

方案二:Python实现(高效快速,推荐)

如果追求速度,Python方案在单个进程内完成所有哈希计算,无需频繁fork,10万次迭代仅需几秒:

import hashlib

# 十六进制种子转为二进制
seed_hex = 'AABBCCDDEEFF1122'
seed_bin = bytes.fromhex(seed_hex)

current_hash = seed_bin
# 执行100000次SHA256迭代哈希
for _ in range(100000):
    current_hash = hashlib.sha256(current_hash).digest()

# 输出十六进制格式的最终哈希
print(current_hash.hex())

说明:

  • bytes.fromhex():直接将十六进制字符串转为二进制数据
  • hashlib.sha256().digest():计算SHA256哈希并返回二进制结果
  • 全程在Python进程内循环,无额外进程创建,效率远高于Bash方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:53:24