0

XMLファイルをハッシュしようとしています.XMLの内容をハッシュすることはすでに機能しています。私は次のコードを使用しています:

        XmlDocument doc = new XmlDocument();
        doc.PreserveWhitespace = true;
        doc.Load(txtFile.Text);

        XmlNodeList list = doc.GetElementsByTagName("Document");

        XmlElement node = (XmlElement)list[0];
        //node.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
        string s = node.OuterXml;

        using (MemoryStream msIn = new MemoryStream(Encoding.UTF8.GetBytes(s)))
        {
            XmlDsigC14NTransform t = new XmlDsigC14NTransform(true);
            t.LoadInput(msIn);
            using (var hash = new SHA256Managed())
            {
                byte[] digest = t.GetDigestedOutput(hash);
                txtHash.Text = BitConverter.ToString(digest).Replace("-", String.Empty);
            }
        }

ただし、これは XML のコンテンツのみをハッシュします。私が必要とするのは、内容だけではなく完全な XML をハッシュすることです。

コンテンツのみをハッシュすると、ハッシュは取得したコントロールと比較できません。

4

1 に答える 1

0

を作成せずにファイルの内容を読み取り、内容をXmlDocumentハッシュできます。

var file = File.ReadAllBytes(txtFile.Text);
using (var hash = new SHA256Managed())
{
   byte[] digest = hash.ComputeHash(file);
   txtHash.Text = BitConverter.ToString(digest).Replace("-", String.Empty);
}
于 2013-10-08T11:19:28.940 に答える