Ich arbeite an einem Programm, das ganze Laufwerke für eine bestimmte Datei durchsucht. Im Moment berechne ich einen MD5-Hash für die bekannte Datei und scanne dann alle Dateien rekursiv nach einer Übereinstimmung.Schnellere MD5 Alternative?
Das einzige Problem ist, dass MD5 bei großen Dateien mühsam langsam ist. Gibt es eine schnellere Alternative, die ich verwenden kann, während ich eine sehr kleine Wahrscheinlichkeit von Fehlalarmen behalte?
Der gesamte Code ist in C#.
Vielen Dank.
aktualisieren
ich, dass auch MD5 und dass Scheibe ziemlich schnell sein kann I/O der limitierende Faktor sein sollte, gelesen habe. Das lässt mich glauben, dass mein Code möglicherweise nicht optimal ist. Gibt es Probleme mit diesem Ansatz?
MD5 md5 = MD5.Create();
StringBuilder sb = new StringBuilder();
try
{
using (FileStream fs = File.Open(fileName, FileMode.Open, FileAccess.Read))
{
foreach (byte b in md5.ComputeHash(fs))
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
catch (Exception)
{
return "";
}
Statt .ToString zu tun ("x2") verwenden http://blogs.msdn.com/b/blambert/archive/2009/02/22/blambert-codesnip -fast-Byte-Array-zu-Hex-String-Konvertierung.aspx, die Sie etwas Zeit sparen. – tcables
Wie heißt "ToLower" und "ToUpper"? –