RFC: 1321
Оригинал: The MD5 Message-Digest Algorithm
Категория: Информационный
Дата публикации:
Автор:
Перевод: Николай Малых

RFC 1321, Страница 2 из 8

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

MD5 является расширением алгоритма цифровых подписей MD4 [1,2]. MD5 несколько медленней, чем MD4, но устроен более «консервативно». Причиной разработки MD5 послужило ощущение того, что алгоритм MD4 может быть адаптирован для применения быстрее, нежели предполагалось; поскольку при разработке MD4 основным требованием была высокая скорость, он находится «на самом краю» допустимости в плане устойчивости к криптоаналитическим атакам. MD5 немного проигрывает в скорости, но существенно выигрывает в безопасности. Алгоритм MD5 открыт для обозрения (public domain) и возможно будет адаптирован в качестве стандартного.

md5 OBJECT IDENTIFIER ::=
  iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) 5}

В идентификаторе типа X.509 (AlgorithmIdentifier [3]) параметры для MD5 должны иметь тип NULL

2. Термины и обозначения

В этом документе термин «слово» (word) используется для 32-битовых значений, а «байт» - для восьмибитовых. Последовательности битов могут интерпретироваться естественным путем как последовательность байтов, в которой каждая группа из 8 последовательных битов интерпретируется как байт, в котором старший (наиболее значимый) бит располагается первым. Подобно этому последовательность байтов может интерпретироваться как последовательность 32-битовых слов, в которой каждая группа из 4 последовательных байтов интерпретируется как слово, где младший (наименее значимый) указывается первым.

Запись x_i означает x i-ое (x[i]). Если индекс представляет собой выражение, оно будет заключаться в фигурные скобки x_{i+1}. Символ ^ используется для обозначения степени (экспонента) - x^i означает x в степени i.

Символ "+" обозначает сложение слов (т. е., сложение с использованием модуля 2^32). Запись X <<< s означает 32-битовое слово, полученное циклическим сдвигом X влево на s позиций. not(X) означает побитовое дополнение X, а X v Y побитовую операцию X OR Y (X ИЛИ Y). Запись X xor Y означает побитовую операцию X XOR Y (исключающее ИЛИ), а XY побитовую операцию X AND Y (X И Y).

Страница 2 из 8

2007 - 2022 © Русские переводы RFC, IETF, ISOC.