Какова цель дополнения сообщения md5, если оно уже имеет правильную длину? - PullRequest
5 голосов
/ 13 сентября 2010

Мне известен процесс заполнения в md5, но какова цель добавления 1 и нескольких 0 к сообщению, которое уже имеет правильную длину?

Это для безопасности или просто для маркера?

Ответы [ 2 ]

7 голосов
/ 14 сентября 2010

Процедура заполнения не должна создавать коллизии.Если у вас есть сообщение m , оно добавляется в pm , длина которого кратна 512. Теперь представьте pm как сообщение m ' сам по себе, т.е. биты заполнения уже добавлены, как если бы они были частью сообщения.Если заполнение просто сохраняет m ' без изменений, как вы предлагаете, то m и m' приведут к одинаковому значению хэша, даже если они являются отдельными сообщениями.Это будет коллизия, также известная как «совсем не годится».

Вообще говоря, процедура заполнения должна быть такой, чтобы ее можно было однозначно удалить: вы должны иметь возможность просматривать заполненное сообщение,и без колебаний решите, какие биты взяты из самого сообщения, а какие были добавлены в качестве дополнения.Ничто в ходе хэш-функции на самом деле не удаляет отступы, но это должно быть концептуально осуществимо.Это в некотором роде математически невозможно, если сообщения длиной, кратной 512, «дополняются», вообще не добавляя ни одного бита.

Вышеприведенное является общим для всех хеш-функций.MD5 и нескольким функциям того же общего семейства (включая SHA-1, SHA-256 ...), использующим конструкцию Меркле-Дамгарда , также требуется, чтобы длина входных данных была закодирована в заполнении (это необходимо для достижения некоторых доказательств безопасности).В MD5 длина кодируется как 64-битное число.С битом «1» для каждого сообщения есть как минимум 65 битов заполнения (и максимум 511).

1 голос
/ 13 сентября 2010

Сообщение дополняется так, что длина делится на 512. Помните, что это битовое представление сообщения, для которого вычисляется хеш.А поскольку сообщение необходимо разбить на 512-битные порции, дополнительные биты добавляются как заполнение.Обратитесь к разделу Algorithm в Wiki для получения более подробной информации.

...