Как алгоритм хеширования md5 сжимает данные до фиксированной длины?

Я знаю, что MD5 производит 128-битный дайджест. Мой вопрос в том, как он создает этот вывод фиксированной длины из сообщения 128 бит +?

ИЗМЕНИТЬ:

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


person liamzebedee    schedule 27.08.2011    source источник


Ответы (4)


Когда вы создаете хэш MD5, вы не сжимаете входные данные. Сжатие подразумевает, что вы сможете распаковать его обратно в исходное состояние. MD5, с другой стороны, является односторонним процессом. Вот почему он используется для хранения паролей; в идеале вам нужно знать исходную входную строку, чтобы иметь возможность снова сгенерировать тот же результат MD5.

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

person TaylorP    schedule 27.08.2011
comment
Что ж, надеюсь, кто-то не использует MD5 для паролей (или вообще не использует MD5, так как в наши дни есть несколько альтернативных/лучших вариантов), но общая идея та же +1 ;-) - person ; 27.08.2011
comment
Термин сжатие используется при описании криптографических хеш-функций, но он означает что-то отличное от обычного значения Zip/Bzip/7Zip. - person President James K. Polk; 31.08.2011

Рассмотрим что-то вроде начала со 128-битного значения, ввода 128 бит за раз и выполнения XOR каждого из этих входных блоков с существующим значением.

MD5 значительно сложнее, но общая идея та же: ввод обрабатывается по 128 бит за раз. Каждый входной блок может изменить значение результата, но не влияет на длину.

person Jerry Coffin    schedule 27.08.2011
comment
Но что, если сообщение больше максимального размера хеш-дайджеста (128 бит для MD5)? Что он делает тогда? - person liamzebedee; 27.08.2011
comment
Алгоритм разбивает сообщение на куски, а затем смешивает каждый фрагмент в хеш один за другим. Все сообщение влияет на окончательное значение хэша, но алгоритм просматривает только один фрагмент за раз. - person Stuart Cook; 27.08.2011

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

person glglgl    schedule 27.08.2011

Короче говоря, он разделится на множество частей и проделает операцию.

Если вы задаетесь вопросом о столкновении, считайте, что ваше сообщение доступно только для чтения.

Битовое пространство намного больше, чем читаемое символьное пространство.

person liheyuan    schedule 27.08.2011