Calculer MD5SUM de gros fichiers en C #

J’utilise le code suivant pour calculer MD5SUM d’un fichier –

byte[] b = System.IO.File.ReadAllBytes(file); ssortingng sum = BitConverter.ToSsortingng(new MD5CryptoServiceProvider().ComputeHash(b)); 

Cela fonctionne normalement, mais si je rencontre un fichier volumineux (~ 1 Go), par exemple une image iso ou un fichier DVD VOB, une exception de mémoire insuffisante s’est produite.

Cependant, je suis capable de calculer le MD5SUM dans cygwin pour le même fichier en environ 10 secondes.

S’il vous plaît suggérer comment puis-je obtenir que cela fonctionne pour les gros fichiers dans mon programme.

Merci

Je suggère d’utiliser la méthode alternative:

 MD5CryptoServiceProvider.ComputeHash(Stream) 

et passez juste un stream d’entrée ouvert sur votre fichier. Cette méthode ne lira presque certainement pas le fichier entier en mémoire en une fois.

Je voudrais également noter que dans la plupart des implémentations de MD5, il est possible d’append byte[] données d’ byte[] dans la fonction digest, un morceau à la fois, puis de demander le hachage à la fin.