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

如何在C#中获取SHA3-512哈希?HashLib结果与在线工具不符

解决SHA3-512哈希结果与在线工具不一致的问题

嘿,这个问题我之前也碰到过!核心原因是你混淆了Keccak和最终标准化的SHA3算法——虽然SHA3脱胎于Keccak,但NIST在标准化时调整了填充规则,导致两者对同一输入生成的哈希值完全不同。你当前代码调用的是CreateKeccak512(),而在线工具计算的是标准SHA3-512。

直接修改代码即可解决

把代码里的CreateKeccak512()换成HashLib提供的标准SHA3-512实现CreateSHA3_512(),就能得到和在线工具一致的结果:

using HashLib;
using System;

class Program {
    static void Main(string[] args) {
        // 改用标准SHA3-512实现
        var sha3512 = HashFactory.Crypto.SHA3.CreateSHA3_512();
        var tempHash = sha3512.ComputeString("test");
        Console.WriteLine(tempHash.ToString().ToLower().Replace("-", ""));
    }
}

补充:为什么会有差异?

原始Keccak和标准SHA3的核心区别在于填充方式:

  • Keccak使用的是0x01后缀的填充规则
  • 标准SHA3则采用0x06后缀的填充规则(这是NIST在标准化Keccak为SHA3时做的关键调整)

这一点点填充差异就会导致最终哈希值完全不同,所以只要切换到专门的SHA3-512实现,就能匹配在线工具的计算结果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:26:48