C# MD5.ComputeHash 格式
C# MD5.ComputeHash format
我正在使用 C# 代码:
using (var md5 = MD5.Create())
{
using (var fStream = File.OpenRead(fFile))
{
string Hash = BitConverter.ToString(md5.ComputeHash(fStream));
fStream.Close();
return Hash;
}
}
输出的格式是这样的:
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 控制台应用程序。我怎样才能获得与重新哈希控制台应用程序相同的哈希格式,以便我可以与遗留文件进行比较?
你总是可以这样做:
Hash = Hash.Replace("-", "");
.Insert(7, " ")
.Insert(16, " ")
.Insert(25, " ");
使用一些帮助方法来格式化您的字符串:
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)
试试这个
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+", "");
}
我正在使用 C# 代码:
using (var md5 = MD5.Create())
{
using (var fStream = File.OpenRead(fFile))
{
string Hash = BitConverter.ToString(md5.ComputeHash(fStream));
fStream.Close();
return Hash;
}
}
输出的格式是这样的:
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 控制台应用程序。我怎样才能获得与重新哈希控制台应用程序相同的哈希格式,以便我可以与遗留文件进行比较?
你总是可以这样做:
Hash = Hash.Replace("-", "");
.Insert(7, " ")
.Insert(16, " ")
.Insert(25, " ");
使用一些帮助方法来格式化您的字符串:
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)
试试这个
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+", "");
}