Я работаю над программой, которая ищет все диски для данного файла. На данный момент я вычисляю хэш MD5 для известного файла и затем рекурсивно сканирую все файлы, ища совпадение.
Единственная проблема заключается в том, что MD5 мучительно медленен в больших файлах. Есть ли более быстрая альтернатива, которую я могу использовать, сохраняя при этом очень небольшую вероятность ложных срабатываний?
Весь код находится на С#.
Спасибо.
Обновление
Я читал, что даже MD5 может быть довольно быстрым и что дисковый ввод-вывод должен быть ограничивающим фактором. Это заставляет меня думать, что мой код может быть не оптимальным. Существуют ли какие-либо проблемы с этим подходом?
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 "";
}