c# - 使用 StreamReader 和 Readline() 为文件生成 MD5 值

标签 c# md5 readline

好的。我的问题的不同方面已在该论坛上被多次询问和回答。但是,我认为从来没有人问过我对这个问题的特殊变体。所以,就这样吧。我正在尝试为同一个文本文件生成两个哈希值,以便比较数据文件在处理之前和处理之后的情况。这一点疯狂的目的是验证整个文件是否已被程序读取和处理。

我已经向自己证明,使用字节和数组将文件分成大块,然后使用 MD5.TransformBlock 将创建一个具有值(value)(该程序代码遍布网络)。而且,当我运行我的程序时,两个哈希值是相同的。但是,我正在使用 StreamReader 的 readline() 方法一次一行地读取文本文件,这会生成不正确的哈希值。

伪代码是:

BufferedStream reader = OpenFile(file)
string initialMd5 = generateMd5FromBufferedStream(reader)

//Start from the beginning again
reader.setposition = 0
reader.DiscardBufferedData();

while((tmpLine = reader.readline()) != null ) {
    Byte() buffer = GetBytes(tmpLine);
    md5.TransformBlock(buffer, 0, buffer.length, 0)
}

md5.TransformFinal(buffer, 0, 0);
String finalMd5 = ConvertToString(md5.Hash());

有什么想法吗?我对如何解决这个问题的想法已经用完了。

提前致谢!

最佳答案

这不是所发布问题的答案,但检查文件的上次访问或修改日期是否足以检测更改? .Net 在 System.IO 命名空间中有一个 FileInfo 类,它具有 LastAccessTime 和 LastWriteTime 的属性。

关于c# - 使用 StreamReader 和 Readline() 为文件生成 MD5 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27136307/

相关文章:

c# - 为 Acumatica 创建自定义用户控件

java - 如何安全地将 MD5 哈希转换为 Java/Scala 中的存储桶?

readline - 将 readline 接口(interface)到 Rust

c# - WCF 服务可测试性和依赖注入(inject)

c# - 示例字符串的正则表达式字符串

c# - 从 BackgroundWorker C# 调用的 CoInitialize

vba - 如何使用 VBA 获取文件的 MD5 十六进制哈希值?

java - 什么样的 Java 类型是 "[B"?

c# - 如何限制 .NET 中 StreamReader.ReadLine() 读取的字符数?

python - 将数字数据(保存在文本文件中)读取到Python中的正确方法是什么?