我有一个FileStream
连接到xml文件,我想直接读入SHA512对象,以便为校验和计算哈希值(不是安全用途)。
问题有两个:
我可以将整个文件读入xml结构,删除节点,然后将其写入一个然后插入SHA512.ComputeHash
的流,但这会导致性能下降。我希望能够以某种方式删除节点作为流上的操作,然后以某种方式将流链接在一起,形成一个可以传递到SHA512.ComputeHash(Stream)
的流。
我该如何做到这一点?
答案 0 :(得分:0)
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;
}