双重 SHA-256(SHA-256d)哈希生成器
计算双重 SHA-256(SHA-256d,即比特币使用的哈希):对二进制 SHA-256 摘要再做一次 SHA-256。支持十六进制输入和字节序反转,在浏览器中运行。
完全在浏览器中运行,您的数据不会被上传。
什么是 双重 SHA-256 哈希生成器?
双重 SHA-256,也写作 SHA-256d,先用 SHA-256 对输入计算哈希,再对得到的 32 字节二进制摘要再计算一次 SHA-256。比特币的区块头、交易 ID、Merkle 树和 Base58Check 校验码都使用这种哈希。本工具还可以按区块浏览器的显示方式,以反转字节顺序的形式显示结果。
如何使用 双重 SHA-256 哈希生成器
- 在 要计算哈希的文本 中输入数据;处理比特币数据结构时,请把输入编码选为 十六进制字节,并粘贴序列化后的区块头或交易。
- 如果只想对普通字符串计算哈希,请保持编码为 文本 (UTF-8)。
- 勾选 反转字节顺序(比特币显示区块哈希和交易 ID 的方式),即可得到区块浏览器和 Bitcoin Core 所显示的值(txid / 区块哈希)。
- 选择 输出格式,然后点击 复制。
示例
Bitcoin genesis block header (Hex bytes): 0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c, Reverse byte order on
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
这是著名的创世区块哈希。不反转字节顺序时,输出为 6fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d6190000000000。
何时使用 双重 SHA-256 哈希生成器
可用它手工核对比特币区块头或交易 ID、计算 Base58Check 校验码(SHA-256d 的前 4 个字节),或复现其他协议中的 SHA-256d 值。不要用它处理密码;如果规范要求的是普通 SHA-256,也不要用它——两者结果不同。对摘要的十六进制文本再计算一次哈希同样不是 SHA-256d。
双重 SHA-256 哈希生成器 的工作原理
本工具计算 SHA-256(SHA-256(data))。关键细节在于:第二次 SHA-256 作用于第一次摘要的 32 个原始字节,而不是它的 64 字符十六进制字符串——许多在线工具在这一点上都会出错。比特币把这 32 字节的结果视为小端序数字,因此我们熟悉的、以多个 0 开头的区块哈希,其实是字节反转后的摘要;反转字节顺序(比特币显示区块哈希和交易 ID 的方式) 选项做的正是这件事。
常见用例
- 根据 80 字节的区块头验证比特币区块哈希
- 根据原始序列化交易计算交易 ID(txid)
- 计算 Base58Check 地址或 WIF 密钥的 4 字节校验码
- 在开发期间交叉检查挖矿或钱包实现
安全提示
SHA-256d 的抗碰撞性与 SHA-256 相同。它不是密码哈希——存储密码请使用 Argon2、scrypt 或 bcrypt。所有哈希计算都在你的浏览器本地完成。
常见问题
比特币为什么要哈希两次?
中本聪使用 SHA-256d,很可能是为了防御对单次 Merkle–Damgård 哈希的长度扩展攻击。它并不会让找到碰撞比 SHA-256 本身更难,但现在它已固化在协议中。
为什么我的结果与区块浏览器不一致?
常见原因有三个:区块头被当作文本而不是 十六进制字节 输入、第二次哈希作用在了十六进制字符串而不是原始摘要上,或者没有反转字节顺序。要得到浏览器风格的哈希,请勾选 反转字节顺序(比特币显示区块哈希和交易 ID 的方式)。
“abc”的双重 SHA-256 是什么?
使用 UTF-8 输入和正常字节顺序时,结果为 4f8b42c22dd3729b519ba6f68d2da7cc5b2d606d05daed5ad5128cc03e6c6358。