Frage

Ich verwende folgenden Code MD5SUM einer Datei zu berechnen -

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

Das funktioniert normalerweise gut, aber wenn ich begegne, eine große Datei (~ 1 GB) - z.B. ein ISO-Image oder eine DVD VOB-Datei - ich bekomme eine Nicht genügend Speicher Ausnahme

.

Obwohl, ich bin in der Lage, die MD5SUM in Cygwin für die gleiche Datei in etwa 10secs zu berechnen.

Bitte legen nahe, wie kann ich dies für große Dateien in meinem Programm zu arbeiten.

Danke

War es hilfreich?

Lösung

Ich schlage vor, unter Verwendung der alternativen Methode:

MD5CryptoServiceProvider.ComputeHash(Stream)

und geben nur in einem Eingangsstrom auf die Dateien geöffnet. Diese Methode wird an Sicherheit grenzender Wahrscheinlichkeit nicht in der gesamten Datei im Speicher in einem Rutsch lesen.

würde ich auch beachten, dass in den meisten Implementierungen von MD5 ist es möglich, byte[] Daten in den Digest-Funktion ein Stück zu einer Zeit, und dann fragen Sie nach dem Hash am Ende.

hinzufügen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top