J'utilise le code suivant pour calculer MD5SUM d'un fichier -Computing MD5SUM de gros fichiers en C#
byte[] b = System.IO.File.ReadAllBytes(file);
string sum = BitConverter.ToString(new MD5CryptoServiceProvider().ComputeHash(b));
Cela fonctionne bien normalement, mais si je rencontre un gros fichier (~ 1 Go) - par exemple une image iso ou un fichier DVD VOB - je reçois une exception Out of Memory. 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 ce qui fonctionne pour les gros fichiers dans mon programme.
Merci
Oui. Mono implémente en fait ComputeHash (Stream) en lisant de façon itérative dans un octet [4096] (http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/corlib/System.Security.Cryptography/HashAlgorithm.cs? révision = 107126 & view = markup). Je m'attendrais à ce que la mise en œuvre de MS soit très similaire. En général, l'utilisation de ReadAllBytes signifie probablement que vous faites quelque chose de mal. Même pour les fichiers courts, l'utilisation d'un Stream est plus élégante. –
C'est assez mignon. J'ai essayé des solutions simples à partir d'autres messages sur la lecture à un flux de mémoire, etc, mais ils semblaient tous échouer pour les fichiers extrêmement volumineux. Cela fonctionne parfaitement et c'est super simple. Merci :) – mrduclaw