Каков процент случаев, когда два файла с одинаковым размером байтов дают одинаковый хэш md5?

Каков процент случаев, когда два файла с одинаковым размером байтов дают одинаковый хэш md5?

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

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

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

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

решение1

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

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

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

решение2

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

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

Связанный контент