我需要計算相當大的文件(千兆字節)的校驗和。這可以通過以下方法來完成:可能用緩衝讀取計算MD5(或其他)散列?
private byte[] calcHash(string file)
{
System.Security.Cryptography.HashAlgorithm ha = System.Security.Cryptography.MD5.Create();
FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] hash = ha.ComputeHash(fs);
fs.Close();
return hash;
}
然而,文件通常在緩衝的方式書面只是事先(比如寫32MB的一次)。我深信我看到了一個哈希函數的重寫,它允許我在寫入的同時計算MD5(或其他)哈希,即:計算一個緩衝區的哈希值,然後將得到的哈希值送入下一次迭代。
事情是這樣的:(僞-ISH)
byte [] hash = new byte [] { 0,0,0,0,0,0,0,0 };
while(!eof)
{
buffer = readFromSourceFile();
writefile(buffer);
hash = calchash(buffer, hash);
}
散列現在sililar什麼會運行整個文件的calcHash功能來實現。
現在,我無法在.Net 3.5框架中找到任何重寫,我在做夢嗎?它從來沒有存在過,還是我只是在搜索?同時執行寫入和校驗和計算的原因是由於大文件造成的。
omg,只是發佈了相同的建議,使用相同的格式=) – 2010-01-23 20:03:19
好吧,但+1也提供了一個參考! – 2010-01-23 20:05:19
Ay caramba!它是!這是我正在尋找的功能。很高興知道我沒有完全掌握。感謝Guffa和Rubens及時提供正確答案。 +1給你們兩個,我會接受這個答案,因爲包含的代碼示例。 – 2010-01-23 20:31:34