【问题标题】:Same code gives different result in .net core and .net 4.7.2相同的代码在 .net core 和 .net 4.7.2 中给出不同的结果
【发布时间】:2019-12-11 20:47:19
【问题描述】:

下面是获取字符串Md5值的C#代码

using System;
using System.Security.Cryptography;
using System.Text;

namespace ConsoleApp1
{
  class Program
  {
    static void Main(string[] args)
    {
        var urlPart = "dd5fad78903da9d3ce4905f8e731d6c4ýundefinedý3780534ý5";
        Console.WriteLine("value= " + urlPart);
        var md5val = md5(urlPart, Encoding.Default);
        Console.WriteLine("md5= " + md5val);
    }

    public static string md5(string value, System.Text.Encoding encoding)
    {
        var buffer = encoding.GetBytes(value);
        //Console.WriteLine("buffer= " + BitConverter.ToString(buffer));

        MD5 md5Hasher = MD5.Create();
        byte[] data = md5Hasher.ComputeHash(buffer);
        StringBuilder sBuilder = new StringBuilder();
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }
        return sBuilder.ToString();
    }
  }
}

如果我在 .Net 4.72 上编译它会给出

md5="b5d0f17bf46f869abf8d8f51156126b7"

如果我在 .Net core 3.0 上编译它会给出

md5="96af5cbab2ae75384e0f46a961dcbc4e"

怎么了,为什么结果不一样???

有人可以帮帮我吗?

【问题讨论】:

标签: c# .net-core .net-4.7.2


【解决方案1】:

检查

  var md5val = md5(urlPart, Encoding.Default);

因为Encoding.Default 对于.net 核心系统的活动代码页 在.net 中始终是Utf-8框架

https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding.default?view=netframework-4.8

【讨论】:

  • 感谢您的回答,我只需要找到我的计算机的默认编码是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-07
  • 1970-01-01
相关资源
最近更新 更多