|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Шаг 4. Вычисление в циклеЧетыре переменных копируются в другие переменные: A в a, B в b, C в c и D в d.)
Главный цикл состоит из четырех очень похожих На каждом этапе 16 раз используются различные операции. Каждая операция представляет собой нелинейную функцию над тремя из a, b, c и d. Затем она добавляет этот результат к четвертой переменной, подблоку текста и константе. Далее результат циклически сдвигается вправо на переменное число битов и добавляет результат к одной из пер еменных a, b, c и d. Наконец результат заменяет одну из переменных a, b, c и d. Существуют четыре нелинейных функции, используемые по одной в каждой операции (для каждого этапа – другая функция). 1) 2) 3) 4)
Если обозначает j -ый подблок сообщения (от 0 до 15), а <<<s обозначает циклический сдвиг влево на s битов, то используются следующие четыре операции: FF(a,b,c,d,Mj,s,ti) означает a = b + ((a + F(b,c,d) + Mj + ti,) <<<s) GG(a,b,c,d,Mj,s,ti) означает a = b + ((a + G (b,c,d) + + Mj + ti) <<<s) HH (a,b,c,d,Mj,s,ti,) означает a = b + ((a + H (b, c, d) + + Mj + ti) <<<s) II(a,b,c,d,Mj,s,ti) означает a = b + ((a + I (b, c, d) + + Mj + ti) <<<s)
Четыре этапа (64 действия выглядят следующим образом): Этап 1: 1) FF(a, b, c, d, M0, 7, 0xd76aa478) 2) FF(d, a, b, c, M1, 12, 0xe8c7b756) 3) FF(c, d, a, b, M2, 17, 0x242070db) 4) FF(b, c, d, a, M3, 22, 0xc1bdceee) 5) FF(a, b, c, d, M4, 7, 0xf57c0faf) 6) FF(d, a, b, c, M5, 12, 0x4787c62a) 7) FF(c, d, a, b, M6, 17, 0xa8304613) 8) FF(b, c, d, a, M7, 22, 0xfd469501) 9) FF(a, b, c, d, M8, 7, 0x698098d8) 10) FF(d, a, b, c, M9, 12, 0x8b44f7af) 11) FF(c, d, a, b, M10, 17, 0xffff5bb1) 12) FF(b, c, d, a, M11, 22, 0x895cd7be) 13) FF(a, b, c, d, M12, 7, 0x6b901122) 14) FF(d, a, b, c, M13, 12, 0xfd987193) 15) FF(c, d, a, b, M14, 17, 0xa679438e) 16) FF(b, c, d, a, M15, 22, 0x49b40821)
Этап 2 17) GG(a, b, c, d, M1, 5, 0xf61e2562) 18) GG(d, a, b, c, M6, 9, 0xc040b340) 19) GG(c, d, a, b, M11, 14, 0x265e5a51) 20) GG(b, c, d, a, M0, 20, 0xe9b6c7aa) 21) GG(a, b, c, d, M5, 5, 0xd62f105d) 22) GG(d, a, b, c, M10, 9, 0x02441453) 23) GG(c, d, a, b, M15, 14, 0xd8ale681) 24) GG(b, c, d, a, M4, 20, 0xe7d3fbc8) 25) GG(a, b, c, d, M9, 5, 0x2,lelcde6) 26) GG(d, a, b, c, M14, 9, 0xc33707d6) 27) GG(c, d, a, b, M3, 14, 0xf4d50d87) 28) GG(b, c, d, a, M8, 20, 0x455al4ed) 29) GG(a, b, c, d, M13, 5, 0xa9e3e905) 30) GG(d, a, b, c, M2, 9, 0xfcefa3f8) 31) GG(c, d, a, b, M7, 14, 0x676f02d9) 32) GG(b, c, d, a, M12, 20, 0x8d2a4c8a)
Этап 3: 33) HH(a, b, c, d, M5, 4, 0xfffa3942) 34) HH(d, a, b, c, M8, 11, 0x8771f681) 35) HH(c, d, a, b, M11, 16, 0x6d9d6122) 36) HH(b, c, d, a, M14, 23, 0xfde5380c) 37) HH(a, b, c, d, M1, 4, 0xa4beea44) 38) HH(d, a, b, c, M4, 11, 0x4bdecfa9) 39) HH(c, d, a, b, M7, 16, 0xf6bb4b60) 40) HH(b, c, d, a, M10, 23, 0xbebfbc70) 41) HH(a, b, c, d, M13, 4, 0x289b7ec6) 42) HH(d, a, b, c, M0, 11, 0xeaa127fa) 43) HH(c, d, a, b, M3, 16, 0xd4ef3085) 44) HH(b, c, d, a, M6, 23, 0x04881d05) 45) HH(a, b, c, d, M9, 4, 0xd9d4d039) 46) HH(d, a, b, c, M12, 11, 0xe6db99e5) 47) HH(c, d, a, b, M15, 16, 0x1fa27cf8) 48) HH(b, c, d, a, M2, 23, 0xc4ac5665)
Этап 4: 49) II(a, b, c, d, M0, 6, 0xf4292244) 50) II(d, a, b, c, M7, 10, 0x432aff97) 51) II(c, d, a, b, M14, 15, 0xab9423a7) 52) II(b, c, d, a, M5, 21, 0xfc93a039) 53) II(a, b, c, d, M12, 6, 0x655b59c3) 54) II(d, a, b, c, M3, 10, 0x8f0ccc92) 55) II(c, d, a, b, M10, 15, 0xffeff47d) 56) II(b, c, d, a, M1, 21, 0x85845ddl) 57) II(a, b, c, d, M8, 6, 0x6fa87e4f) 58) II(d, a, b, c, M15, 10, 0xfe2ce6e0) 59) II(c, d, a, b, M6, 15, 0xa3014314) 60) II(b, c, d, a, M13, 21, 0x4e081lal) 61) II(a, b, c, d, M4, 6, 0xf7537e82) 62) II(d, a, b, c, M11, 10, 0xbd3af235) 63) II(c, d, a, b, M2, 15, 0x2ad7d2bb) 64) II(b, c, d, a, M9, 21, 0xeb86d391) После всего этого a, b, c и d прибавляются к A, B, C и D, соответственно, и алгоритм продолжается для следующего 512-битного блока данных(до полного их исчерпания). Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |