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

.NET 6控制台应用Keccak256哈希结果与预期不符问题求助

问题分析与解决

错误根源

你将十六进制字符串转成字节数组后,又通过Convert.ToHexString(ba)转回了十六进制字符串,接着调用shaKec.CalculateHash(hex)时,Nethereum的该方法会把输入的字符串当成普通文本(按UTF-8编码转换为字节)计算哈希——这和在线工具选择TEXT模式的行为完全一致,自然得不到HEX模式下的正确结果。

修正方案

直接对转换后的字节数组计算Keccak256哈希,而非转回字符串。修正后的Main方法代码如下:

static void Main ()
{
    string str = "DF4566150FEE083F2A956B8666E666CD8AB6DC6A05A0D8722EDD8E175BD83FF662B0088FE94B03C5F1FD881B7CB522AE2AE0C19CC9BB4969EC702C7016C6D887";
    Sha3Keccack shaKec = new Sha3Keccack();
    byte[] ba = StringToByteArray(str);
    // 直接对原始字节数组计算哈希,再转为十六进制字符串输出
    string kec = shaKec.CalculateHash(ba).ToHexString();
    Console.WriteLine(kec);
}

修改后,代码会直接处理十六进制对应的原始字节数据,和在线工具选择HEX模式的逻辑一致,运行后即可得到预期结果:53DB7117947F19F22349D28908B79CB67FF2E0D7A15D2721C49AB05B5287F315。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:00:59