将对象序列化为xml并对结果进行哈希处理

时间:2011-08-30 12:12:52

标签: c# xml-serialization

我一直在尝试将对象序列化为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);
    }            
}

2 个答案:

答案 0 :(得分:8)

回放信息流:

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

Serialize之后,流位于 end ,没有可供读取的数据。

答案 1 :(得分:1)

因为,没有任何东西的散列总是相同的散列,最初的想法是在写入后将流位置设置回第一个字节:

stream.Position = 0;