我一直在尝试将对象序列化为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);
}
}
答案 0 :(得分:8)
回放信息流:
serialize.Serialize(stream, value);
stream.Position = 0;
return hash.ComputeHash(stream);
在Serialize
之后,流位于 end ,没有可供读取的数据。
答案 1 :(得分:1)
因为,没有任何东西的散列总是相同的散列,最初的想法是在写入后将流位置设置回第一个字节:
stream.Position = 0;