Muszę niezależnie obliczać skróty wielu bloków danych. Coś takiego:Czy stan HashAlgorithm.ComputeHash() jest stanowy?
using(HashAlgorithm hasher = new ActualHashAlgorithm()) {
for(int i = 0; i = numberOfBlocks; i++) {
byte[] block = getBlock(i);
byte[] hash = hasher.ComputeHash(block);
// use hash
}
}
Czy mogę używać tego samego obiektu HashAlgorithm
między blokami? Czy HashAlgorithm
przywróci stan między połączeniami do ComputeHash()
, czy muszę usunąć obiekt HashAlgorithm
i utworzyć nowy dla każdego nowego bloku danych?
zgadzam się z Tobą, że użycie 'object.GetHashCode()' nie powinny być wykorzystywane do tworzenia trwałych skrótów. Jednak wykorzystanie dobrze udokumentowanych algorytmów mieszania w przestrzeni nazw 'System.Security.Cryptography', takich jak' SHA256', nie doprowadzi do problemów, o których ostrzega. –