Какие-либо протесты к генерации уникальных имен файлов для случайных изображений путем выполнения MD5 по содержимым изображения?

8 ответов

Учитывая абсолютно случайное содержание файла и хороший криптографический хеш, вероятность, что будет два файла с тем же значением хэш-функции, достигает 50%, когда количество файлов - примерно 2 к (число битов в хеш-функции / 2). Таким образом, для хеша на 128 битов будет 50%-й шанс по крайней мере одной коллизии, когда количество файлов достигнет 2^64.

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

Это - вероятностная игра. Если количество изображений будет существенно меньше, чем 2^64, Вы, вероятно, в порядке. Если Вы все еще заинтересованы, использование комбинации SHA-1 плюс MD5 (как другой предложенный ответ) получает Вас к в общей сложности 288 высококачественным битам хеша, что означает, что у Вас будет 50%-й шанс коллизии, после того как существует 2^144 файлы. 2^144 могущественное большое количество. Могущественный большой. Можно было бы даже сказать огромный.

3
ответ дан 8 December 2019 в 17:29
поделиться

Необходимо использовать SHA-1 вместо MD5, потому что MD5 повреждается. Существуют пары различных файлов с тем же хешем MD5 (не теоретический; они на самом деле известны, и существуют алгоритмы для генерации еще большего количества пар). Для Вашего приложения это означает, что кто-то мог загрузить два различных изображения, которые будут иметь тот же хеш MD5 (или кто-то мог генерировать такую пару изображений и опубликовать их где-нибудь в Интернете, таким образом, что два из Ваших пользователей позже попытаются загрузить их с запутывающими результатами).

3
ответ дан 8 December 2019 в 17:29
поделиться

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

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

5
ответ дан 8 December 2019 в 17:29
поделиться

Вы могли использовать UUID вместо этого?

1
ответ дан 8 December 2019 в 17:29
поделиться

Кажется прекрасным мне, если Вы соглашаетесь с именами файлов с 32 символами.

Править: Я не использовал бы, это как основание (говорит), что центральная база данных ФБР террористических фотографий под арестом, так как достаточно мотивированный взломщик мог, вероятно, придумать изображение, которое имело тот же MD5 как существующий. Если бы это имело место затем, то Вы могли бы использовать SHA1 вместо этого, который несколько более безопасен.

2
ответ дан 8 December 2019 в 17:29
поделиться

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

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

0
ответ дан 8 December 2019 в 17:29
поделиться

Вы могли бы хотеть изучить технологическое использование сетей P2P для идентификации дубликатов файлов. Решение, включающее MD5, SHA-1 и длину файла, было бы довольно надежно (и вероятно излишество).

0
ответ дан 8 December 2019 в 17:29
поделиться

Это будет трудоемким. Почему Вы только не присваиваете им последовательные идентификаторы?

0
ответ дан 8 December 2019 в 17:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: