2011-08-30 31 views
4

我一直在試圖序列化一個對象到XML然後散列結果,但是每當我創建散列它總是相同的不同的對象,不知道我在做什麼錯或者遺漏了。幫助將不勝感激。序列化對象到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

請不要前綴您的標題與「C#」。這就是我們所有的標籤[所以]。 –

回答

8

倒帶流:

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

Serialize,流是在年底,沒有可用的數據被讀取。

+0

非常感謝排序的東西。 – Jonathan

1

,因爲沒什麼哈希將永遠是相同的散列,最初的想法是寫它後設置的流位置回到第一個字節:

stream.Position = 0;