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

C#生成的MD5哈希值与Node.js生成的MD5哈希值不匹配问题求助

问题根因

你的MD5哈希不一致问题和编码无关,核心是两边字符串拼接的分隔符逻辑不匹配:

  • Node.js的Array.prototype.join()方法不传入参数时,默认使用逗号,作为元素分隔符
  • 你的C#代码中String.Join("", inputs)使用的是空字符串作为分隔符,拼接出来的原始字符串和Node.js侧完全不同,自然哈希结果不一致。

修复步骤

1. 修正C#侧字符串拼接逻辑

将拼接分隔符改为逗号,同时对齐Node.js侧的空值兜底逻辑:

public static string CalculateHash(string[] inputs)
{
    // 对齐Node.js逻辑:空输入兜底为空字符串,用逗号拼接数组元素
    var hashInput = inputs == null ? "" : String.Join(",", inputs);
    using (var md5 = System.Security.Cryptography.MD5.Create())
    {
        byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(hashInput);
        byte[] hashBytes = md5.ComputeHash(inputBytes);
        var sb = new StringBuilder();
        for (int i = 0; i < hashBytes.Length; i++)
        {
            sb.Append(hashBytes[i].ToString("x2"));
        }
        return sb.ToString();
    }
}

2. 验证对齐

Node.js侧update方法默认使用UTF-8编码处理字符串,和C#侧Encoding.UTF8逻辑完全对齐,无需额外调整编码配置。
你可以用测试用例验证:输入["test1", "test2"],两边拼接后的原始字符串都是test1,test2,哈希结果将完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:24:03