È ansible calcolare l’hash MD5 (o altro) con le letture bufferizzate?

Ho bisogno di calcolare i checksum di file piuttosto grandi (gigabyte). Questo può essere realizzato utilizzando il seguente metodo:

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; } 

Tuttavia, i file vengono normalmente scritti solo in anticipo in modo buffered (ad esempio scrivendo 32mb alla volta). Sono così convinto di aver visto un override di una funzione di hash che mi ha permesso di calcolare un hash MD5 (o altro) nello stesso momento in cui scrivevo, cioè: calcolare l’hash di un buffer, quindi alimentare l’hash risultante nella successiva iterazione .

Qualcosa del genere: (pseudocode-ish)

 byte [] hash = new byte [] { 0,0,0,0,0,0,0,0 }; while(!eof) { buffer = readFromSourceFile(); writefile(buffer); hash = calchash(buffer, hash); } 

l’hash è ora in silendo rispetto a ciò che si otterrebbe eseguendo la funzione calcHash sull’intero file.

Ora, non riesco a trovare alcun override del genere in the.Net 3.5 Framework, sto sognando? Non è mai esistito, o sono solo pessimo a cercare? La ragione per eseguire contemporaneamente sia il calcolo della scrittura che del checksum è perché ha senso a causa dei file di grandi dimensioni.