Хеширование уникальных строк с помощью MD2

У меня есть список уникальных адресов электронной почты — очень простой вопрос. Если электронная почта уникальна, выходные данные всегда будут уникальными,

hash('md2', $email);

0

Решение

Ну, лучшая атака, согласно WikiPedia:

В 2009 году было показано, что MD2 подвержен коллизионной атаке с временной сложностью 2 ^ 63,3 оценки функции сжатия и потребностью в памяти 2 ^ 52 хеш-значений. Это немного лучше, чем атака на день рождения, которая, как ожидается, потребует 265,5 оценки функции сжатия.

Однако было бы сложно найти коллизию для короткого адреса электронной почты.

Если вам действительно нужно больше безопасности а также 128-битное хеш-значение намного лучше, если использовать первые (самые левые) 128-битные SHA-256, которые на момент написания считаются безопасными. Использование полных 256 битов, конечно, предпочтительнее.

Шансы на случайное столкновение близки к нулю. Так что, если вы просто используете это для создания чего-то уникального (то есть без учета целевых атак), тогда использование MD2 — это хорошо. Даже тогда, если вы можете изменить протокол, используйте вместо этого SHA-256.

2

Другие решения

Хеш-функции, такие как MD2, похожи на название, предполагающее алгоритмы дайджеста сообщений, они принимают произвольную длину и дают фиксированную длину. Должны существовать коллизии для уникальных входов.

Вы можете использовать более сильные хеш-функции, такие как SHA-256, где коллизия между двумя строками крайне маловероятна по сравнению с MD2. Здесь применяется парадокс дня рождения, поэтому вы не должны использовать функции MDx или что-то более короткое, чем 256-битные хеш-функции.

Я вижу, что вы хэшируете адреса электронной почты. В зависимости от вашей системы это может быть использовано при столкновении. Например, некоторые провайдеры электронной почты включают виртуальные адреса в форме «[email protected]», «[email protected]» и так далее. Злоумышленник может использовать этот факт для обнаружения конфликта с другим известным адресом электронной почты, например, для получения пароля для сброса пароля или чего-то подобного.

1

MD2 производит хэш 128 бит. Вы можете гарантировать как минимум одно столкновение хешей, хешируя 2 ^ 128 + 1 строку.

1
По вопросам рекламы [email protected]