Possible de calculer MD5 (ou autres) de hachage avec tampon de lecture?

J'ai besoin de calculer les sommes de très gros fichiers (gigaoctets). Ceci peut être accompli en utilisant la méthode suivante:

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

Toutefois, les fichiers sont normalement écrites à l'avance dans un buffer manière (par exemple écrire de 32 mo est à la fois). Je suis tellement convaincu que j'ai vu un remplacement d'une fonction de hachage qui m'a permis de calculer un MD5 (ou autres) de hachage en même temps que l'écriture, c'est à dire: le calcul de la valeur de hachage d'un tampon, puis l'alimentation de celle qui résulte de hachage dans la prochaine itération.

Quelque chose comme ceci: (pseudo-ish)

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

de hachage est maintenant sililar à ce qui allait être fait en exécutant la calcHash de la fonction sur l'ensemble du fichier.

Maintenant, je ne peux pas trouver des remplacements comme ça dans the.Net 3.5 Cadre, suis-je en train de rêver ? A il n'a jamais existé, ou suis-je juste moche à la recherche ? La raison de faire à la fois d'écriture et de calcul de checksum à la fois parce qu'il fait sens en raison de fichiers de taille importante.

InformationsquelleAutor sindre j | 2010-01-23