C#MD5.ComputeHash格式

时间:2017-01-12 13:19:20

标签: c# md5

我正在使用C#代码:

??

输出的格式如下:

  

41-D5-43-13-08-23-DE-18-71-56-A5-BA-46-55-0B-CF

我还使用了一个名为rehash的哈希程序来自麻省理工学院(我认为) ReichlSoft哈希计算器(http://www.reichlsoft.de.vu)格式化哈希,如下所示:

  

41D54313 0823DE18 7156A5BA 46550BCF

我希望能够使用C#代码而不是rehash控制台应用程序。如何实现与rehash控制台应用程序相同的哈希格式,以便与遗留文件进行比较?

3 个答案:

答案 0 :(得分:4)

使用一些帮助方法格式化字符串:

public static string ByteArrayToString(byte[] ba, int delimiter)
{
    StringBuilder hex = new StringBuilder(ba.Length * 2);
    int count = 0;
    foreach (byte b in ba)
    {
        hex.AppendFormat("{0:x2}", b);
        count++;
        if (count % delimiter == 0)
        {
            hex.Append(" ");
        }
    }
    return hex.ToString().ToUpper().Trim();
}

并称之为:

ByteArrayToString(md5.ComputeHash(fStream), 4)

答案 1 :(得分:1)

你总是可以这样做:

Hash = Hash.Replace("-", "");
           .Insert(7, " ")
           .Insert(16, " ")
           .Insert(25, " ");

答案 2 :(得分:0)

试试这个

public String GetHash(string fFile)
{
    var sb = new StringBuilder();   

    using (var md5 = MD5.Create())
    {
        using (var fStream = File.OpenRead(fFile))
        {
            var hash = md5.ComputeHash(fStream);
            for (int i = 0; i < hash.Length; i++)
                sb.Append(hash[i].ToString("X2"));

            fStream.Close();
        }    
    }
    return sb.ToString();
}
public bool Compare(string hash1, string hash2)
{
    return Regex.Replace(hash1, @"\s+", "") == Regex.Replace(hash2, @"\s+", "");
}