gpt4 book ai didi

c# - 如何为没有问号的控制台窗口格式化 md5.ComputeHash

转载 作者:行者123 更新时间:2023-11-30 12:55:43 26 4
gpt4 key购买 nike

我有一个简单的代码来为文件生成校验和来比较文件是否是新的。

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);
}
}
}
}

输出:

调试.WriteLine:

a4‌​88‌​ad‌​a7‌​cc‌​db‌​a7‌​31‌​25‌​a9‌​e0‌​44‌​75‌​44‌​86‌​7c

控制台.写入:

a4??88??ad??a7??cc??db??a7??31??25??a9??e0??44??75??44??86??7c

我认为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 关于其工作原理的评论。 Summary ""实际上是用两个unicode字符替换字符。

控制台输出:

d41d8cd98f00b204e9800998ecf8427e

编辑:我的哈希字符串显然与您的不同,因为我们使用的不是同一个文件,我想我会把它添加到答案中。

关于c# - 如何为没有问号的控制台窗口格式化 md5.ComputeHash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46671398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com