@djhox

Как защититься от дублирования файлов при загрузке на сервер?

Как лучше всего сохранять файлы на сервере?
Раньше я записывал md5 хэш для каждого файла и при загрузке сверял хэш нового файла с имеющимся в базе и если такой хэш существует - файл не загружался, а отдавался id предыдущего закаченного файла.

Но, я так понимаю, что с md5 высока вероятность коллизии. Как же лучше тогда проверять файлы на дубликаты?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 2
GavriKos
@GavriKos
1) Храните несколько разных хешей, есть другие алгоритмы помимо md5
2) Перед md5 сравнивайте еще и просто размер
3) Если уж ВСЕ совпало - для полного исключения - сравните побайтово
Ответ написан
SagePtr
@SagePtr
Еда - это святое
Я храню в в таких случаях в виде sha1(содержимое) + оригинальное расширение. Если файлов много, то хранить их не скопом в одной папке, а раскидать по папкам, имена которых состоят из первых 2 символов хэша (если больше папок надо, то можно несколько уровней вложенности - по символам 1-2, внутри ещё папки по символам 3-4 и т.д.)
Вместо sha1 можно любой другой алгоритм, например, sha256.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можно просто заменить алгоритм хэширования на BLAKE2b.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы