我需要獨立計算多個數據塊的哈希值。事情是這樣的:是HashAlgorithm.ComputeHash()有狀態的嗎?
using(HashAlgorithm hasher = new ActualHashAlgorithm()) {
for(int i = 0; i = numberOfBlocks; i++) {
byte[] block = getBlock(i);
byte[] hash = hasher.ComputeHash(block);
// use hash
}
}
我可以重用塊之間的同HashAlgorithm
對象? HashAlgorithm
之間的重置狀態調用ComputeHash()
或我需要處置HashAlgorithm
對象,併爲每個新的數據塊創建一個新的?
我同意你使用'object.GetHashCode()'不應該被用來創建持久的哈希值。但是,在'System.Security.Cryptography'命名空間(如SHA256)中使用良好記錄的散列算法不會導致您提出的問題。 –