Является ли md5 инъективной функцией? - PullRequest
4 голосов
/ 11 января 2012

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

Если нет, то есть ли другой подобный алгоритм хеширования, который является инъективным?

Ответы [ 5 ]

6 голосов
/ 11 января 2012

Нет, MD5 имеет уязвимости при столкновении . Другие хеш-функции, такие как SHA-1, также имеют коллизии хэшей, хотя это гораздо менее вероятно, чем MD5.

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

Вы можете посмотреть на CMPH для получения информации о создании идеальной хеш-функции.

0 голосов
/ 09 октября 2015

Каждая хеш-функция НЕ является инъективной.Хэши отображают большой домен на значительно меньший кодомен.По принципу «голубиной дыры» такая функция не может быть инъективной, потому что в домене будут элементы, которые будут отображаться на один и тот же элемент в домене.большой файл в качестве ввода и получения короткой контрольной суммы.Возможных больших файлов (голубей) гораздо больше, чем возможных коротких контрольных сумм (голубиных отверстий), поэтому «столкновения» обязательно произойдут.

0 голосов
/ 11 января 2012

md5 не является инъективной функцией, потому что выход меньше ввода, поэтому у вас больше возможностей ввода, чем вывода.

Я думаю, что ша-1 не является инъективным.

0 голосов
/ 11 января 2012

Вот еще один пост, который может ответить на ваш вопрос.

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

Вот еще один пост, обсуждающий эту проблему.

0 голосов
/ 11 января 2012

Практически да.

Реально, было показано, что у него есть возможность столкновения. Я бы использовал SHA-1 вместо этого. 1

...