Гарантируют ли алгоритмы хеширования уникальные выходные данные, если одна и та же соль используется для уникальных входных данных? - PullRequest
2 голосов
/ 25 мая 2011

У нас есть представление о системе, которая использует значение для уникального идентификатора, который другая компания, с которой мы хотим поделиться информацией, не примет.Я думал об использовании одностороннего хэширования шифрования, подобного тому, что делается с паролями.Проблема в том, могут ли создаваемые алгоритмом хеширования выходные значения быть гарантированно уникальными, если входные данные гарантированно уникальны, а соль постоянна?

Ответы [ 5 ]

4 голосов
/ 25 мая 2011

Ответ - да. Один и тот же ввод идентификатора с одной и той же солью всегда будет давать один и тот же вывод.

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

3 голосов
/ 25 мая 2011

Является ли ваш вопрос двумя разными значениями хэша для одной и той же вещи, или это детерминированные хеши?

Если это первое, тогда да, вы можете иметь коллизии хешей.Хорошо спроектированный криптографически сильный хеш должен затруднить поиск двух значений, хэширующих к одному и тому же значению, или поиск входных данных, соответствующих данному хешу, но они не могут гарантировать уникальность.Если ваш хеш имеет постоянный размер, скажем, 64 бита (без потери общности), у вас будет не более 2 ^ 64 уникальных выходных значений хеша.Поскольку существует более 2 ^ 64 потенциальных входов, если вы используете строки, коллизия гарантируется после того, как ваш хэш не превышает 2 ^ 64 + 1 элементов.

3 голосов
/ 25 мая 2011

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

Наличие коллизий и для более коротких входных данных является свойством алгоритма хеширования, но идея состоит в том, что вероятность их должна быть довольно мала (около 1 / (2 ^ выходной размер) для каждой пары входных данных, хороший алгоритм).

1 голос
/ 25 мая 2011

Да, тот же хеш будет получен, когда вход и соль совпадают.Обратите внимание, что разные входы могут создавать один и тот же хеш.

0 голосов
/ 25 мая 2011

короче нет.Более длинный ответ - perfect oracle сможет решить поставленный вами вопрос.Поскольку никто никогда не доказывал существование совершенного оракула, в настоящее время считается невозможным.Другая сторона этого не в том, что это невозможно, просто мы, как коллектив, недостаточно умны, чтобы понять это.Аналогично P! = NP

...