Могут ли быть коллизии в контрольных суммах файлов? - PullRequest
0 голосов
/ 26 апреля 2019

Я создаю службу, которая принимает файл в качестве входных данных, а затем выполняет некоторую обработку этого файла. Я хотел бы создать контрольную сумму файла и затем проверить базу данных, чтобы увидеть, был ли этот файл уже обработан, а затем извлечь данные оттуда, а не обработать их.

У меня есть несколько вопросов об этом процессе.

1) Нужно ли беспокоиться о коллизиях контрольной суммы? АКА - два файла могут когда-нибудь возвращать одну и ту же контрольную сумму?

2) Я планирую использовать MD5 для вычисления хэша - есть ли более быстрые способы сделать это? Есть ли алгоритмы, которые я должен рассмотреть по другим причинам?

1 Ответ

2 голосов
/ 27 апреля 2019

1) Нужно ли беспокоиться о коллизиях контрольной суммы? Я планирую использовать MD5 для расчета

Существует разница между контрольной суммой (например, crc32) и криптографическим хэшем. Криптографический хеш предназначен для защиты от столкновений.

Это означает, что использование хэша может быть лучшим вариантом, который у вас есть. Вероятность столкновения очень низкая, может быть незначительная, математически все еще выше нуля.

Я планирую использовать MD5 для вычисления хэша - есть ли более быстрые способы сделать это? Существуют ли алгоритмы, которые я должен рассмотреть по другим причинам?

MD5 быстр, но больше не безопасен. Хеш был сломан, и существуют быстрые методы для получения нескольких входных данных, которые приводят к одному и тому же хэш-результату Стандарт, используемый сегодня для хэша, это sha-256 (Пока вы не используете md5 в качестве контрольной суммы, не касающейся преднамеренных коллизий, вы можете быть в порядке. Независимо от того, что вам следует избегать криптопримитивов, которые считаются устаревшими)

...