1

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

Чтобы избежать дублирования файлов и сэкономить место на моем статическом хостинг-сервере, мое приложение сохраняет имя файла как «MD5.BYTE_SIZE "(напр .: 054d995efa7e9c91569d205d24a2b486.188154)

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

Если это так, как лучше всего сохранить мои имена файлов? С двумя разными хешами (например, MD5.SHA-256.BYTE_SIZE)?

2 ответа2

4

Для практических целей ноль, если пользователь активно не пытается создать два файла с одинаковым хешем, что возможно с MD5.

Если вместо этого вы используете SHA-256, "ноль" (для практических целей), даже если пользователь активно пытается создать два файла одинакового размера.

Точная вероятность где-то около 1/2 ^ 128 для двух разных файлов генерировать один и тот же хеш. Из-за парадокса дня рождения вам понадобится около 2 ^ 64 файлов, пока не будет 50% вероятности, что два будут иметь одинаковый хэш. Не беспокойтесь об этом на практике. Для SHA256 числа равны 1/2 ^ 256 и 2 ^ 128 соответственно. Эти цифры также известны как "не произойдет".

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .