gpt4 book ai didi

c# - 如何在使用 BinaryWriter 和 Reader 时有效地实现文件的哈希验证?

转载 作者:行者123 更新时间:2023-11-30 22:34:05 24 4
gpt4 key购买 nike

我是 C# 的新手,所以请多多包涵。

我正在用 C# (.NET 4.0) 编写一个小型应用程序。为了编写文件,我使用了这段代码的一些变体:

using (var fStream = new FileStream(filename, FileMode.CreateNew, FileAccess.Write, 
FileShare.Read))
using (var crypto = new CryptoStream(fStream, encryptor, CryptoStreamMode.Write))
using (var binary = new BinaryWriter(crypto))

我想确保文件没有损坏,也没有被篡改。因此,我考虑过将 sha256 或 hmac 与 sha256 一起使用(如果速度不慢的话)。 我不知道如何有效地实现文件内容的哈希处理

目前我的想法是:

1.) hmac.ComputeHash(流)- 但它不适用于二进制流-如果我使用文件流,我不知道它对流的哪些部分进行哈希处理,因为我想将哈希附加到文件末尾。因此,我不知道在阅读如何在不对附加哈希进行哈希处理的情况下对文件流进行哈希处理。

2.) 使用二进制流读取/写入内存流,然后调用 memory.ToArray() 并散列该字节数组-我觉得效率很低

我该怎么办?

感谢您的想法和回答。

最佳答案

所有 HashAlgorithm 都实现了 ICryptoTransform

您可以简单地阅读围绕 HashAlgorithm 的另一个 CryptoStream,然后在阅读完成后检查其哈希值。

关于c# - 如何在使用 BinaryWriter 和 Reader 时有效地实现文件的哈希验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998240/

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