Estoy trabajando en un programa que busca unidades enteras para un archivo determinado. Por el momento, calculo un hash MD5 para el archivo conocido y luego escaneo todos los archivos recursivamente, buscando una coincidencia.¿Una alternativa más rápida a MD5?
El único problema es que MD5 es extremadamente lento en archivos grandes. ¿Existe una alternativa más rápida que pueda usar, manteniendo una probabilidad muy pequeña de falsos positivos?
Todo el código está en C#.
Gracias.
actualización
He leído que incluso MD5 puede ser bastante rápido y que el disco E/S debería ser el factor limitante. Eso me lleva a creer que mi código podría no ser óptimo. ¿Hay algún problema con este enfoque?
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 "";
}
En vez de hacer .ToString ("x2") utilizan http://blogs.msdn.com/b/blambert/archive/2009/02/22/blambert-codesnip -fast-byte-array-to-hex-string-conversion.aspx que le ahorrará tiempo. – tcables
¿Cuál es el punto de llamar 'ToLower' y' ToUpper'? –