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

.NET 5中MD5哈希生成结果与在线工具不一致的问题

MD5哈希结果不一致的原因分析

问题场景

用户提供的C#代码如下:

private static string ComputeMD5Hash(string input)
{
    using (MD5 md5 = MD5.Create())
    {
        byte[] inputBytes = Encoding.Default.GetBytes(input);
        byte[] hashBytes = md5.ComputeHash(inputBytes);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < hashBytes.Length; i++)
        {
            sb.Append(hashBytes[i].ToString("x2"));
        }
        return sb.ToString();
    }
}

在.NET 5环境运行后得到的MD5哈希值为91c8798099fac8762bb0e014084a3f08,但在线MD5工具计算出的结果却是8bb25958e7b1caad4a3be362d6098d76,需要排查差异原因。

核心原因分析

  • 编码不匹配是首要因素:代码中使用Encoding.Default将字符串转字节数组,该编码是系统依赖的ANSI编码,会随操作系统区域设置变化(比如中文系统多为GBK,英文系统为ISO-8859-1)。而绝大多数在线MD5工具默认采用UTF-8编码处理字符串,字节序列的差异直接导致哈希结果不同。
  • 输入内容隐性差异:如果本地测试的输入字符串和在线工具输入的内容存在细微差别(比如包含不可见的换行符、全角/半角空格差异),也会导致哈希结果不一致。
  • 排除大小写因素:代码用"x2"生成小写哈希,在线结果同样为小写,因此大小写不是本次问题的诱因。

修复方案

将代码中的编码替换为UTF-8,与在线工具的默认编码对齐:

byte[] inputBytes = Encoding.UTF8.GetBytes(input);

修改后,只要输入内容完全一致,本地计算结果就会和在线工具匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:08:17