【问题标题】:Serialize object to xml and hash the result将对象序列化为 xml 并对结果进行哈希处理
【发布时间】:2011-08-30 12:12:51
【问题描述】:

我一直在尝试将一个对象序列化为 xml,然后对结果进行哈希处理,但是每当我创建哈希值时,它对于不同的对象总是相同的,不确定我做错了什么或遗漏了什么。帮助将不胜感激。

这是我正在使用的代码:

private static byte[] CreateHash<T>(T value)
{
    using (MemoryStream stream = new MemoryStream())
    using (SHA512Managed hash = new SHA512Managed())
    {
        XmlSerializer serialize = new XmlSerializer(typeof(T));

        serialize.Serialize(stream, value);
        return hash.ComputeHash(stream);
    }            
}

【问题讨论】:

  • 请不要在标题前加上“C#”。这就是我们在Stack Overflow 上的标签。

标签: c# xml-serialization


【解决方案1】:

倒流:

serialize.Serialize(stream, value);
stream.Position = 0;
return hash.ComputeHash(stream);

Serialize 之后,流在结束,没有可供读取的数据。

【讨论】:

    【解决方案2】:

    由于没有任何内容的散列始终是相同的散列,因此最初的想法是将流位置设置回写入后的第一个字节:

    stream.Position = 0;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 2012-01-28
      • 2017-10-30
      • 2011-05-06
      相关资源
      最近更新 更多