Я собираюсь отслеживать разные версии потенциально миллионов разных файлов, и я намерен хэшировать их, чтобы определить, что я уже видел эту конкретную версию файла. В настоящее время я использую только MD5 (продукт все еще находится в разработке, поэтому он еще не обрабатывал миллионы файлов), что явно недостаточно для предотвращения коллизий.
Однако вот мой вопрос - Могу ли я избежать коллизий, если я хэширую файл двумя разными методами и сохраняю оба хэша (скажем, SHA1 и MD5) или если я выберу один более длинный хеш ( как SHA256) и полагаться только на это? Я знаю, что вариант 1 имеет 288 битов хеша, а вариант 2 имеет только 256, но предположим, что мои два варианта имеют одинаковую общую длину хеша.
Поскольку я имею дело с миллионами файлов (и несколькими версиями этих файлов с течением времени), я хотел бы сделать все возможное, чтобы избежать коллизий. Однако процессорное время не является (полностью) свободным, поэтому мне интересно, что сообщество думает о компромиссе - добавление большего количества бит к моему хешу пропорционально дороже для вычисления, и есть ли преимущества для нескольких различных хешей по сравнению с одному более длинному хешу при равном количестве бит в обоих решениях?