我有一个简单的代码来为文件生成校验和,以比较文件是否是新的。
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 :
Console.Write :
我认为 MD5 摘要函数的输出是二进制字节序列,而不是可打印的字符串。
如何将 md5 摘要作为人类可读的表示打印为 Debug.WriteLine 中的输出?
最佳答案
我不能确定为什么但在 BitConverter 线之外进行替换修复了它。
var checksum = BitConverter.ToString(md5.ComputeHash(stream))
.ToLower();
System.Diagnostics.Debug.WriteLine(checksum);
checksum = checksum.Replace("-", "");
Console.Write(checksum);
请参阅@Hans Passant 关于此操作原因的评论。总结 ""实际上用两个 unicode 字符替换了该字符。
控制台输出:
编辑:我的哈希字符串显然与您的不同,因为我们没有使用相同的文件,我想我会将其添加到答案中。