2

FileStreamチェックサム(セキュリティの使用ではない)の目的でハッシュを計算するために、SHA512オブジェクトに直接読み込みたいxmlファイルに接続しています。

問題は2つあります。

  1. xmlのノードの一部を省略したいのですが、
  2. ファイルはかなり大きいので、全部をメモリにロードしたくない

ファイル全体をxml構造に読み込み、ノードを削除してから、ストリームに書き込んでからプラグインすることSHA512.ComputeHashができますが、パフォーマンスが低下します。どういうわけか、ストリームに対する操作としてノードの削除を実行し、次に、に渡すことができる単一のストリームに何らかの方法でストリームをチェーン化できるようにしたいと思いますSHA512.ComputeHash(Stream)

どうすればこれを達成できますか?

4

1 に答える 1

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;
}
于 2013-03-26T19:15:45.583 に答える