我有一个简单的代码来生成文件的校验和,以比较文件是否是新文件。
class Program
{
static void Main(string[] args)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead("output_log.txt"))
{
var checksum = BitConverter.ToString(md5.ComputeHash(stream))
.Replace("-", "")
.ToLower();
System.Diagnostics.Debug.WriteLine(checksum);
Console.Write(checksum);
}
}
}
}
输出:
Debug.WriteLine :
88 A4 A7广告立方厘米分贝A7 31 25 A9 44 E0 75 44 86 7C
Console.Write :
A4 ?? 88 ??广告?? A7 ??立方厘米??分贝?? A7 ?? 31 ?? 25 ?? A9 ?? E0 ?? 44 ?? 75 ?? 44 ?? 86 ?? 7C < / p>
我认为MD5摘要功能的输出是二进制字节序列,而不是可打印的字符串。
如何将md5摘要打印为人类可读的表示形式,作为Debug.WriteLine中的输出?
答案 0 :(得分:0)
我无法确定为什么但是在BitConverter线之外进行替换会修复它。
var checksum = BitConverter.ToString(md5.ComputeHash(stream))
.ToLower();
System.Diagnostics.Debug.WriteLine(checksum);
checksum = checksum.Replace("-", "");
Console.Write(checksum);
请参阅@Hans Passant对其原因的评论。摘要&#34;&#34;实际上用两个unicode字符替换字符。
控制台输出:
d41d8cd98f00b204e9800998ecf8427e
编辑:我的哈希字符串显然与你的不同,因为我们没有使用相同的文件,我会将其添加到答案中。