10-значный хэш электронной почты - PullRequest
1 голос
/ 21 октября 2011

Насколько надежно использовать хэш из 10 символов для идентификации адресов электронной почты?

MailChimp имеет 10-значные буквенно-цифровые идентификаторы для адресов электронной почты.10 символов по 4 бита каждый дает 40 бит, чуть более одного триллиона.Возможно, для предприятия такого размера, как MailChimp, это дает разумный запас для уникального пространства индекса, и у них есть одна таблица со всеми возможными электронными письмами, проиндексированная с помощью 40-битного числа.

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

Любые подсказки для оценки этого для пользовательской хеш-функции, кроме необработанного тестирования

1 Ответ

1 голос
/ 24 октября 2011

Вы явно не говорите, что подразумеваете под «надежным», но я предполагаю, что вы пытаетесь избежать столкновений.Как говорит wildplasser, для случайных идентификаторов это все о парадоксе дня рождения, и вероятность столкновения в пространстве идентификаторов с 2 ^ n идентификаторами достигает 50%, когда используются 2 ^ (n / 2) идентификаторов.

На странице Википедии Атаки на день рождения есть большая таблица, иллюстрирующая вероятности столкновений при различных параметрах;например, с 64 битами и желаемой максимальной вероятностью столкновения 1 на 1 миллион, вы можете иметь около 6 миллионов идентификаторов.

Имейте в виду, что существует намного более эффективный способ представления данных в символах, чем в шестнадцатеричном;Например, base64 дает вам 3 байта на 4 символа, то есть 10 символов дают вам 60 бит, а не 40 с шестнадцатеричным.

...