Я могу использовать часть хеша MD5 для идентификации данных?

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

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

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

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

9
задан Community 23 May 2017 в 10:29
поделиться

3 ответа

Короткий ответ - да, вы можете использовать первые 4 байта в качестве идентификатора. Однако остерегайтесь парадокса дня рождения:

http://en.wikipedia.org/wiki/Birthday_paradox

Риск столкновения быстро возрастает по мере добавления большего количества файлов. При 50.000 вероятность столкновения id составляет примерно 25%.

EDIT: Хорошо, только что прочитал ссылку на ваш другой вопрос, и при 100.000 файлов вероятность столкновения составляет примерно 70%.

8
ответ дан 4 December 2019 в 21:08
поделиться

Другой способ сократить хэш - преобразовать его в нечто более эффективное, чем HEX, например Base64 или какой-либо его вариант.

Даже если вы решили взять 4 символа, взяв 4 символа base64, вы получите больше битов, чем в hex.

1
ответ дан 4 December 2019 в 21:08
поделиться
Другие вопросы по тегам:

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