Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Алгоритм MD5

Читайте также:
  1. C. Ветвящихся алгоритмов
  2. CТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ
  3. III. Алгоритмическая конструкция ветвление и ее использование в языке Visual Basic
  4. IV. Алгоритмическая конструкция цикл и ее использование в языке Visual Basic
  5. LINUX|| Алгоритм замещения страниц в ОС Linux.
  6. Алгоритм
  7. АЛГОРИТМ
  8. Алгоритм
  9. Алгоритм FIFO (перша прибула - перша вивантажена)

Алгоритм MD5 (Message Digest №5) разработан Роналдом Риверсом. MD5 использует 4 многократно повторяющиеся преобразования над тремя 32-битными величинами U, V и W:

f(U,V,W)=(U AND V) OR ((NOT U) AND W)

g(U,V,W)=(U AND W) OR (V AND (NOT W))

h(U,V,W)=U XOR V XOR W

k(U,V,W)=V XOR (U OR (NOT W)).

В алгоритме используются следующие константы:

· начальные константы промежуточных величин -

H[0]=6745230116, H[1]=EFCDAB8916, H[2]=98BADCFE16, H[3]=1032547616;

· константы сложения в раундах -

y[j]=HIGHEST_32_BITS(ABS(SIN(j+1))) j=0...63,

где функция HIGHEST_32_BITS(X) отделяет 32 самых старших бита из двоичной записи дробного числа X, а операнд SIN(j+1) считается взятым в радианах;

· массив порядка выбора ячеек в раундах -

z[0...63] = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,

1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12,

5, 8, 11, 4, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2,

0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9);

· массив величины битовых циклических сдвигов влево -

s[0...63] = (7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,

5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,

4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,

6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21).

На первоначальном этапе входной блок данных дополняется одним битом "1". Затем к нему добавляется такое количество битов "0", чтобы остаток от деления блока на 512 составлял 448. Наконец, к блоку добавляется 64-битная величина, хранящая первоначальную длину документа. Получившийся входной поток имеет длину кратную 512 битам.

Каждый 512-битный блок, представленный в виде 16 32-битных значений X[0]...X[15], проходит через сжимающую функцию, которая перемешивает его со вспомогательным блоком (H[0],H[1],H[2],H[3]):

(A,B,C,D) = (H[0],H[1],H[2],H[3])

цикл по j от 0 до 15

T = (A + f(B,C,D) + x[z[j]] + y[j]) ROL s[j]

(A,B,C,D) = (D,B+T,B,C)

конец_цикла

цикл по j от 16 до 31

T = (A + g(B,C,D) + x[z[j]] + y[j]) ROL s[j]

(A,B,C,D) = (D,B+T,B,C)

конец_цикла

цикл по j от 32 до 47

T = (A + h(B,C,D) + x[z[j]] + y[j]) ROL s[j]

(A,B,C,D) = (D,B+T,B,C)

конец_цикла

цикл по j от 48 до 63

T = (A + k(B,C,D) + x[z[j]] + y[j]) ROL s[j]

(A,B,C,D) = (D,B+T,B,C)

конец_цикла

(H[0],H[1],H[2],H[3]) = (H[0]+A,H[1]+B,H[2]+C,H[3]+D)

После того, как все 512-битные блоки прошли через процедуру перемешивания, временные переменные H[0],H[1],H[2],H[3], а 128-битное значение подается на выход хэш-функции.

Алгоритм MD5, основанный на предыдущей разработке Роналда Риверса MD4, был призван дать еще больший запас прочности к криптоатакам. MD5 очень похож на MD4. Отличие состоит в простейших изменениях в алгоритмах наложения и в том, что в MD4 48 проходов основного преобразования, а в MD5 - 64. Несмотря на большую популярность, MD4 "медленно, но верно" был взломан. Сначала появились публикации об атаках на упрощенный алгоритм. Затем было заявлено о возможности найти два входных блока сжимающей функции MD4, которые порождают одинаковый выход. Наконец, в 1995 году было показано, что найти коллизию, т.е. "хэш-двойник" к произвольному документу, можно менее чем за минуту, а добиться "осмысленности" фальшивого документа (т.е. наличия в нем только ASCII-символов с определенными "разумными" законами расположения) - всего лишь за несколько дней.

 




Дата добавления: 2014-12-19; просмотров: 116 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав