gpt4 book ai didi

c# - 计算校验和的流链接 : avoiding memory issues

转载 作者:太空宇宙 更新时间:2023-11-03 16:16:37 25 4
gpt4 key购买 nike

我有一个 FileStream 连接到一个 xml 文件,我想将该文件直接读入 SHA512 对象,以便为校验和(不是安全用途)计算哈希值。

问题是双重的:

  1. 我想省略xml中的一些节点,
  2. 文件很大,我不想将整个文件加载到内存中

我可以将整个文件读入 xml 结构,删除节点,然后将其写入一个流,然后将其插入到 SHA512.ComputeHash 中,但这会导致性能损失。我希望能够以某种方式删除节点作为对流的操作,然后以某种方式将流链接在一起成为一个流,该流可以传递到 SHA512.ComputeHash(Stream)

我怎样才能做到这一点?

最佳答案

using (var hash = new SHA512Cng())
using (var stream = new CryptoStream(Stream.Null, hash, CryptoStreamMode.Write))
using (var writer = XmlWriter.Create(stream))
using (var reader = XmlReader.Create("input.xml"))
{
while (reader.Read())
{
// ... write node to writer ...
}

writer.Flush();
stream.FlushFinalBlock();
var result = hash.Hash;
}

关于c# - 计算校验和的流链接 : avoiding memory issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645128/

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