文本

SHA-3 哈希计算

在浏览器中实时计算输入字符串的 SHA-3(Keccak)哈希值。SHA-3 是 NIST 于 2012 年标准化的下一代哈希函数,采用了与 SHA-2 根本不同的"海绵结构"。


SHA-3

Tips

  • SHA-3 由 Keccak 算法演变而来,通过 NIST 2007—2012 年竞赛选出,输出 256 位
  • SHA-2 采用 Merkle-Damgård 构造,SHA-3 则采用全新的海绵构造(Sponge Construction)
  • 目前无已知安全漏洞;若与现有系统兼容,优先推荐 SHA-256,新设计可考虑 SHA-3。
  • Ethereum 内部使用的是 Keccak-256,与标准化后的 SHA-3 存在微妙差异(填充方式不同)。
  • 海绵构造非常适合硬件实现,同时也是任意长度输出函数 SHAKE128/SHAKE256 的基础。

闲话 ― Keccak 的诞生与 NIST 竞赛

2006 年前后,SHA-1 碰撞攻击的可行性逐渐显现,NIST 决定面向全球征集下一代哈希标准,并于 2007 年正式启动竞赛。共有 64 个算法参赛,历经多轮评审,2012 年最终选出由 Joan Daemen(AES 联合设计者)领衔的 Keccak 算法。

需要特别指出的是,SHA-3 的设计初衷并非取代 SHA-2,而是作为"万一 SHA-2 被破解时的备选方案"。两者基于截然不同的设计理念,从而降低了同时被攻破的风险。

海绵构造的一大优势是可扩展性——在此基础上衍生出了支持任意输出长度的 SHAKE128 和 SHAKE256(可扩展输出函数,XOF),极大地拓展了哈希函数的应用场景。