Question

J'utilise le code suivant pour calculer MD5SUM d'un fichier -

byte[] b = System.IO.File.ReadAllBytes(file);
string sum = BitConverter.ToString(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’affiche.

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

Veuillez suggérer comment je peux obtenir que cela fonctionne pour les gros fichiers de mon programme.

Merci

Était-ce utile?

La solution

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

MD5CryptoServiceProvider.ComputeHash(Stream)

et passez simplement un flux d'entrée ouvert sur votre fichier. Cette méthode ne sera presque certainement pas lue en une fois dans tout le fichier en mémoire.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top