【问题标题】:C# Hash complete xmlC# 哈希完成 xml
【发布时间】:2013-10-15 06:56:06
【问题描述】:

我们正在尝试对一个 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 而不仅仅是内容。

如果我们只对内容进行哈希处理,我们的哈希值不会与我们得到的控件进行比较。

【问题讨论】:

  • 你的意思是,打开文件并对内容进行哈希处理而不将其读入 XmlDocument 的实例?

标签: c# asp.net hash sha256


【解决方案1】:

您可以在不创建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);
}

【讨论】:

  • 谢谢!这确实解决了问题!
猜你喜欢
  • 1970-01-01
  • 2011-11-11
  • 2020-12-21
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
相关资源
最近更新 更多