1
對於我見過的一些人來說,這是一個問題,但大多數人都是關於文本導入問題。這是一個純粹的二元問題。這裏是一些示例代碼。MD5 computeHash(Stream)和computeHash(byte [])之間的區別
MD5 md5Bytes = MD5.Create() ;
MD5 md5Stream = MD5.Create() ;
var random = new Random();
var bytes = new byte[ 4096*2 ] ;
random.NextBytes(bytes);
var stream = new MemoryStream(bytes) ;
stream.Position = 0 ;
var bytesHash = md5Bytes.ComputeHash(bytes);
var streamHash = md5Stream.ComputeHash(stream);
for (int i = 0; i < bytesHash.Length; ++i)
if (bytes[i] != streamHash[i])
{
Console.WriteLine("Different content " + i);
break;
}
當我運行這個,令我驚訝,我得到不同的結果。有人可以解釋一下這裏發生了什麼不應該是一個字節數組的MD5給出相同的結果作爲一個相同的內容流?
誘惑,關閉此爲題外話,由於它只是作爲一個錯字。我會*強烈*鼓勵你總是把大括號放在for循環中,即使當body只是一個單獨的語句。 –
這是調試如何解決問題的一個很好的例子。如果你在VS中有一個斷點而不是編寫代碼來完成它,那麼查看正確的變量會更容易。 –