SHA-3 与 Keccak 哈希生成器
在你的浏览器中,从文本或十六进制字节计算 SHA3-224/256/384/512、Keccak-256/512 和 SHAKE128/256 摘要。
SHA-3 与 Keccak 哈希生成器完全在你的浏览器中运行。你哈希的文本和十六进制字节都在你的设备上处理,绝不会上传到 ArrayKit。
打开 SHA-256 与 SHA-1 哈希工具
关于 SHA-3 与 Keccak 哈希生成器
SHA-3 与 Keccak 哈希生成器会计算完整的 FIPS 202 家族——SHA3-224、SHA3-256、SHA3-384 和 SHA3-512——外加原始的 Keccak-256 和 Keccak-512,以及 SHAKE128/SHAKE256 可扩展输出函数。输入 UTF-8 文本,或切换到十六进制模式对原始字节进行哈希,小写摘要会在你输入时实时更新。它专为解决围绕这些算法的日常困惑而打造:SHA3-256 和 Keccak-256 看起来完全相同,但相差一个填充字节,而 Ethereum 在标准最终定稿之前就选定了 Keccak-256。用它来推导 Ethereum 函数选择器、验证 Solidity 的 keccak256 结果、核对 SHA-3 校验和,或选择 SHAKE 的输出长度。每个摘要都在你的浏览器中计算,因此你哈希的值都留在你的设备上。
功能特性
- 涵盖来自 NIST FIPS 202 的 SHA3-224、SHA3-256、SHA3-384 和 SHA3-512
- 包含 Ethereum 各处使用的原始 Keccak-256 和 Keccak-512
- SHAKE128 和 SHAKE256,其输出长度可由你选择,且按字节对齐
- 通过一键切换,对 UTF-8 文本进行哈希,或粘贴原始十六进制字节
- 摘要在你输入时实时更新,并可一键复制
- 以位显示摘要长度,让你能确认选对了变体
- 当粘贴的十六进制长度为奇数或含有非法字符时给出清晰的错误
- 完全在你的浏览器中运行——你哈希的任何内容都不会被上传
如何使用 SHA-3 与 Keccak 哈希生成器
- 选择一种算法——SHA3-256、Keccak-256、SHAKE256 等
- 选择 UTF-8 以哈希文本,或选择 Hex 以哈希原始字节
- 输入或粘贴你的内容;摘要会即时出现
- 对于 SHAKE,以位设置输出长度,然后复制十六进制摘要
示例
输入
algorithm: Keccak-256
input: "" (empty string)
输出
c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
Ethereum 工具链在各处都依赖的空字符串 Keccak-256 哈希。
常见错误与故障排除
- SHA3-256 和 Keccak-256 对同一段文本给出不同的结果。 — 这是预期之内的——它们使用不同的填充。Ethereum 和 Solidity 的 keccak256 请用 Keccak-256;NIST 标准哈希请用 SHA3-256。
- 十六进制模式报告数字个数为奇数。 — 每个字节是两个十六进制字符,因此输入必须为偶数长度。请去掉多余的半字节或非十六进制字符,然后重试。
- 一个 SHAKE 摘要比预期更长或更短。 — SHAKE 长度以位设置,而非字节——256 位是 64 个十六进制字符。请确保长度是 8 的正整数倍。
- 摘要与我的 Solidity keccak256 输出不一致。 — Solidity 哈希的是 ABI 编码值的原始字节。请切换到 Hex 模式,粘贴那些精确的字节,而不是人类可读的文本。
常见问题
- SHA-3 和 Keccak-256 有什么区别?
- 它们运行相同的 Keccak 海绵结构,但在填充前附加了不同的域分隔字节(SHA-3 为 0x06,Keccak 为 0x01)。仅这一处差异就让它们的摘要完全不同,因此用 SHA3-256 哈希的值绝不会等于用 Keccak-256 哈希的同一个值。
- 为什么 Ethereum 使用 Keccak-256 而不是 SHA3-256?
- Ethereum 在 NIST 用略有不同的填充最终确定 SHA-3 之前,就从最初的 Keccak 提案中采用了 Keccak-256。为了保持兼容,Ethereum 和 Solidity 的 keccak256 保留了原始变体,这也是地址和函数选择器都建立在 Keccak-256 之上的原因。
- 什么是 SHAKE128 和 SHAKE256?
- 它们是可扩展输出函数(XOF):你可以选择想要多少位摘要,而非固定大小。其中的 128 和 256 指的是它们的安全强度,而非输出长度,因此你可以从任一个请求 128、256、512 或更多位。
- 我该如何对原始字节进行哈希,以匹配对 ABI 编码数据的 keccak256 调用?
- 将输入切换到 Hex,并以十六进制粘贴这些字节——可选的 0x 前缀和空格都没问题。工具会哈希这些精确的字节,而非它们的 UTF-8 文本,这正是对编码数据执行 Solidity keccak256 所期望的。
- SHA-3 只是 SHA-256 的一个更快或更安全的版本吗?
- 不是。SHA-3 是一种完全不同的设计——采用 Keccak 海绵结构,而非 SHA-256 背后的 Merkle–Damgård 构造——被选为一种标准化的备选方案。在相同的摘要大小下,它们提供相当的抗碰撞能力,但其输出完全不同,因此 SHA-3 并不是可以直接替换的方案。
- 对于 SHAKE,我该选择什么输出长度?
- 以你所实现的规范所要求的为准。常见的默认值是 SHAKE128 为 256 位、SHAKE256 为 512 位,但任何 8 位的正整数倍都可以——本工具会填入这些默认值,并允许你覆盖它们。
相关工具
- 哈希生成器 — 通过 Web Crypto API 生成 SHA-256 / SHA-1 / SHA-384 / SHA-512。
- 文件哈希校验和 — 计算文件的 MD5、SHA-256 等并核对预期值
- HMAC 生成器 — 在浏览器中用消息和密钥以 SHA-256、SHA-1、SHA-384 或 SHA-512 生成 HMAC 签名。
- Base64 编码 / 解码 — 安全的 UTF-8 Base64 编码与解码。
- AES 加密工具 — 用口令通过 AES-256-GCM 加密和解密文本。
- X.509 证书解码器 — 把 PEM 或 DER 证书解码为详情和指纹
全部 ArrayKit 工具