чатковий стан ABCD називається ініціалізувалися вектором. Визначимо ще функції і константи, які нам знадобляться для обчислень.
Будуть потрібні 4 функції для чотирьох раундів. Введемо функції від трьох параметрів - слів, результатом також буде слово.
раунд.
раунд.
раунд.
раунд.
Визначимо таблицю констант - 64-елементна таблиця даних, побудована наступним чином:
,
де.
Вирівняні дані розбиваються на блоки (слова) по 32 біта, і кожен блок проходить 4 раунди з 16 операторів. Всі оператори однотипні і мають вигляд: [abcd ksi], який визначається як
,
де X - блок даних. X [k]=M [n * 16 + k], де k - номер 32-бітного слова з n-го 512-бітного блоку повідомлення, і - циклічний зсув вліво на біт отриманого 32-бітного аргументу.
Крок 4. Обчислення в циклі
Заносимо в блок даних елемент n з масиву. Зберігаються значення A, B, C і D, що залишилися після операцій над попередніми блоками (або їх початкові значення, якщо блок першого).
AA=A=B=C=D
Раунд 1
/ * [abcd ksi] a=b + ((a + F (b, c, d) + X [k] + T [i]) <<< s). * /
[ABCD 0 7 1] [DABC 1 грудня 2] [CDAB 17 лютого 3] [BCDA 22 березня 4]
[ABCD 4 7 5] [DABC 12 Травень 6] [CDAB 17 червня 7] [BCDA 22 липня 8]
[ABCD 8 7 9] [DABC 9 Грудень 10] [CDAB 17 жовтня 11] [BCDA 22 листопада 12]
[ABCD 12 Липень 13] [DABC 13 грудня 14] [CDAB 14 17 15] [BCDA 15 22 16]
Раунд 2
/ * [abcd ksi] a=b + ((a + G (b, c, d) + X [k] + T [i]) <<< s). * /
[ABCD 1 травня 17] [DABC 6 вересня 18] [CDAB 14 листопада 19] [BCDA 0 20 20]
[ABCD 5 21 травня] [DABC 10 вересень 22] [CDAB 15 14 23] [BCDA 20 квітня 24]
[ABCD 9 Травня 25] [DABC 14 вересня 26] [CDAB 14 березня 27] [BCDA 20 серпня 28]
[ABCD 13 травня 29] [DABC 9 лютого 30] [CDAB 14 липня 31] [BCDA 20 грудня 32]
Раунд 3
/ * [abcd ksi] a=b + ((a + H (b, c, d) + X [k] + T [i]) <<< s). * /
[ABCD 4 травня 33] [DABC 11 серпня 34] [CDAB 16 листопада 35] [BCDA 14 23 36]
[ABCD 4 січня 37] [DABC 4 листопада 38] [CDAB 16 липня 39] [BCDA 23 жовтня 40]
[ABCD 13 квітня 41] [DABC 0 11 42] [CDAB 16 березня 43] [BCDA 23 червня 44]
[ABCD 4 вересня 45] [DABC 11 Грудня 46] [CDAB 15 16 47] [BCDA 23 лютого 48]
Раунд 4
/ * [abcd ksi] a=b + ((a + I (b, c, d) + X [k] + T [i]) <<< s). * /
[ABCD 0 6 49] [DABC 10 липня 50] [CDAB 14 15 51] [BCDA 21 травня 52]
[ABCD 6 грудня 53] [DABC 10 Березня 54] [CDAB 15 жовтня 55] [BCDA 21 січня 56]
[ABCD 6 серпня 57] [DABC 15 жовтня 58] [CDAB 15 червня 59] [BCDA 13 21 60]
[ABCD 4 червня 61] [DABC 11 Жовтня 62] [CDAB 15 лютого 63] [BCDA 21 ве...