Я генерирую 15-символьные буквенно-цифровые коды и сохраняю их как хэш MD5 для защиты. Однако я не могу иметь неуникальные или сталкивающиеся хэши, и если они появляются, я их не вставляю. Так как у меня есть большое количество кодов, которые я буду вставлять в базу данных при жизни приложения, и чтобы обеспечить лучшую производительность моего приложения, я хочу, чтобы самого коллизия было меньше.
Вопрос:
Какова вероятность столкновений с учетом того, что пространство ввода увеличено с 36 до 15? (36, потому что я использую 26 строчных букв и 10 цифр и 15, потому что я генерирую код с 15 из них).
Вы можете обратиться сюда, чтобы понять, как я генерирую коды в первую очередь.
Использование: чтобы использовать их в кодах купонов, и я хочу хэшировать их, чтобы защитить себя от взлома базы данных.
Шансы возникновения столкновения любой Столкновение безопасного хеша незначительно, т. е. близко к нулю. Это даже верно для MD5, который является сломанный безопасный хеш. Даже при очень большом вводе (например, 2 ^ 64) хэшей вероятность генерации коллизии по-прежнему составляет около 1 / (2 ^ 64).
Вероятность того, что ваш вход будет иметь столкновение, конечно, намного выше (при условии, что он генерируется случайным образом), так как 36 ^ 15 намного меньше, чем 2 ^ 128, размер вывода MD5 (36 ^ 15 < (2 ^ 6) ^ 15 = 2 ^ 90 <<< 2 ^ 128). Таким образом, входных значений меньше, чем хеш-значений.
Других решений пока нет …