作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的代码来为文件生成校验和来比较文件是否是新的。
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:
a488ada7ccdba73125a9e0447544867c
控制台.写入:
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/
我是一名优秀的程序员,十分优秀!