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

Шаг 4. Вычисление в цикле

Читайте также:
  1. Вычисление длины дуги кривой
  2. Вычисление композиций точек удвоения
  3. Вычисление концентрации шлаков и отравляющих осколков.
  4. Вычисление координат вершин хода.
  5. Вычисление множеств точек удвоения заданной эллиптической кривой.
  6. Вычисление множества точек удвоения заданной эллиптической кривой.
  7. Вычисление наращенной суммы долга
  8. Вычисление объема и площади тела вращения
  9. Вычисление определенных интегралов.
  10. Вычисление определителей.
  11. Вычисление периода решётки.
  12. Вычисление площадей плоских фигур

Четыре переменных копируются в другие переменные: 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-битного блока данных(до полного их исчерпания).


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)