我正在使用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控制台应用程序相同的哈希格式,以便与遗留文件进行比较?
答案 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+", "");
}