МЕЖДУНАРОДНЫЙ   СТАНДАРТ   ISO   8731-2:  1987  Банковское  дело.
Одобренный  алгоритм аутентификации сообщений. Часть 2. Алгоритмы
аутентификатора  сообщения.  Содержание.  1.  Область  применения
..........................................1       2.       Ссылки
......................................................1        3.
Краткое   описание  ............................................1
3.1.  Общая  часть  ............................................1
3.2. Техническая часть ......................................1 4.
Алгоритм    ....................................................1
4.1.  Определение  используемых  в алгоритме функций ...........1
4.2. Описание алгоритма .....................................3 5.
Описание  режимов  работы  .....................................3
Приложение     Примеры    тестов    для    внедрения    алгоритма
.........................5  1.  Область  применения  В  отдельных
частях  ISO 8731 описываются одобренные алгоритмы аутентификации,
т.е.  отвечающие  требованиям  ISO  8730.  В этой части стандарта
описывается  алгоритм аутентификатора сообщения для использования
при  вычислении  кода  аутентификации  сообщения  (МАС). Алгоритм
аутентификатора сообщения (МАА) разработан специально для быстрой
аутентификации   с  использованием  универсальной  ЭВМ.  Алгоритм
должен  использоваться  при  обработке данных большого объгма и в
том  случае,  когда  программная  реализация алгоритма достаточно
эффективна.   МАА   может  использоваться  и  на  программируемых
калькуляторах.  В  конце  приводятся тестовые примеры, которые не
являются  частью  стандарта. 2. Ссылки ISO 8730. Банковское дело.
Требования   к  аутентификации  сообщений  (оптовые  сделки).  3.
Краткое  описание  3.1. Общая часть МАА работает по принципу кода
аутентификации  сообщения,  т.е.  числа,  посылаемого совместно с
сообщением  и позволяющего получателю проверить, что сообщение не
было   изменено   с   момента  отправки  его  отправителем.  3.2.
Техническая  часть  Все  числа,  используемые в алгоритме, должны
рассматриваться   как   32-битные   беззнаковые  целые,  если  не
оговорено  противное. Для такого числа N: 0 < N < 2**32. Алгоритм
может  быть  удобно и эффективно внедргн на ЭВМ с длиной слова 32
бита  и  более.  Сообщения, подлежащие аутентификации, могут быть
строкой   битов   любой   длины.  Для  обработки  алгоритмом  они
представляются  в  виде  последовательности  32-битных чисел M ,M
,...,M   (всего   n),  называемых  блоками  сообщения.  Процедура
дополнения  последнего  блока  М  до  32  бит  не является частью
алгоритма,  но  должна  быть  определена в конкретном применении.
Алгоритм  не может быть использован для аутентификации сообщений,
состоящих  более  чем  из  1000000 блоков, т.е. n<= 1000000. Ключ
содержит  два 32-битных числа J и K и, следовательно, имеет длину
64  бита.  Результатом  алгоритма  является  значение  32-битного
аутентификатора, обозначаемое Z. Вычисления могут выполняться для
сообщений  длиной  один  блок  (n=1).  Вычисление состоит из тргх
частей: 1) предварительно производятся вычисления с ключами J и K
для получения шести чисел X ,Y ,V ,W, S и Т, которые используются
в  последующих  вычислениях;  2)  главный  цикл - это вычисление,
которое  будет  повторяться  для  каждого  блока  сообщения  М и,
следовательно, для длинных сообщений это основной вид вычислений;
3)  в  заключение дважды проводятся вычисления по главному циклу,
причгм  в  качестве  блоков используются числа S и Т. После этого
вычисляется  аутентификатор  Z.  Режим  работы  (см.  раздел 5) -
важная   характеристика   при  внедрении  алгоритма.  На  рисунке
показано  прохождение  данных  в  схематическом виде. 4. Алгоритм
4.1.  Определение  используемых  в алгоритме функций 4.1.1. Общие
определения  В описании алгоритма используется ряд функций. X и Y
-  это  32битные числа. Результат также является 32-битным числом
(если  не  оговорено  противное).  CYC(X) - результат однобитного
циклического  левого  сдвига  X  AND(X,Y)  -  результат  операции
"логическое  И",  выполняемой  для  каждого из 32 битов OR(X,Y) -
результат  операции  "логическое ИЛИ", выполняемой для каждого из
32   битов   AND(X,Y)  -  результат  операции  "исключающее  ИЛИ"
(сложение  по  модулю  2),  выполняемой  для  каждого из 32 битов
ADD(X,Y)  -  результат сложения X и Y с отбрасыванием переноса из
32-го  бита,  т.е.  сложение  по модулю 2**32 CAR(X,Y) - значение
переноса из 32-го бита при сложении X и Y; имеет значение 0 или 1
MUL1(X,Y), MUL2(X,Y) и MUL2А(X,Y) - три различных вида умножения,
каждая   с   32-битным  результатом  4.1.2.  Определение  функций
умножения Пусть для объяснения умножения 64-битное произведение X
и   Y   обозначено   как   [U,L].   Квадратные   скобки  означают
конкатенацию,  U  слева  от  L. U - это верхняя (старшие разряды)
часть  произведения,  а  L  -  нижняя (младшие разряды) половина.
4.1.2.1. Вычисление MUL1(X,Y) Умножим X на Y для получения [U,L].
Пусть  S  и С - локальные переменные, тогда: S:= ADD(U,L) (1) C:=
CAR(U,L)   (2)   MUL1(X,Y):=   ADD(S,C)   (3)  Таким  образом,  U
складывается  с  С  с  циклическим  переносом. Численно результат
сравним  с  X*Y,  произведением  X  на Y по модулю (2**32-1). Это
необязательно  наименьший  остаток,  так  как  он  может раняться
2**32-1.  4.1.2.2.  Вычисление  MUL2(X,Y)  Этот  вид умножения не
используется   в   главном  цикле,  а  только  в  предварительных
вычислениях.  Пусть D, E, F, S и С - локальные переменные, тогда:
D:=  ADD(U,U) (4) E:= CAR(U,U) (5) F:= ADD(D,2E) (6) S:= ADD(F,L)
(7) C:= CAR(F,L) (8) MUL2(X,Y):= ADD(S,2C) (9) Численно результат
сравним  с  X*Y,  произведением  X  на Y по модулю (2**32-2). Это
необязательно  наименьший  остаток,  так  как  он  может раняться
2**32-1   или   2**32-2.   4.1.2.3.  Вычисление  MUL2А(X,Y)  Этот
упрощенный  вид  MUL2(X,Y), используемый в главном цикле, который
приводит к правильному результату только тогда, когда, по крайней
мере,  одно из чисел X и Y имеет нулевой старший разряд. Этот вид
умножения  используется  в целях экономии при обработке. Пусть D,
E,  F, S и С - локальные переменные, тогда: D:= ADD(U,U) (10) S:=
ADD(D,L)  (11)  C:=  CAR(D,L)  (12)  MUL2A(X,Y):=  ADD(S,2C) (13)
Результат сравним с X*Y, произведением X на Y по модулю (2**32-2)
в  соответствии  с  указанными  условиями,  так как для MUL2(X,Y)
перенос  Е=0.  4.1.3.  Определение функций BYT[X,Y] и PAT[X,Y] На
этапе    предварительных   вычислений   используется   процедура,
предотвращающая   появление   в   ключах  и  результатах  длинных
последовательностей  нулей или единиц. Процедура вырабатывает два
результата,  являющиеся  обусловленными значениями X и Y, а также
число PAT[X,Y], котрое фиксирует сделанные изменения. PAT[X,Y] <=
255, следовательно, это 8-битное число. X и Y рассматриваются как
последовательности  байтов.  Используя  обозначение  [X,Y...] для
конкатенации  [X,Y]=[B  ,B  ,B  ,B  ,B ,B ,B ,B ]. Таким образом,
байты  В  -В  получаются  из  Х, а В -В из Y. Эту процедуру лучше
описать   при   помощи   процедуры,   в  которой  каждый  байт  В
рассматривается как целое длиной 8 битов. begin P:=0; for i:=0 to
7  do begin P:=2*P; if B[i]=0 then Процедура написана на Паскале,
но   begin   введгн  нестандартный  идентификатор  P:=P+1;  B'для
наглядности. B'[i] и B[i] B'[i]:=P соответствуют В и В' в тексте.
end  else  if  B[i]=255  then begin P:=P+1; B'[i]:=255-P end else
B'[i]:=B[i]; end end; Результаты таковы: BYT[X,Y]=[B' ,B' ,B' ,B'
,B'  ,B'  ,B' ,B' ] и PAT[X,Y]= P. 4.2. Описание алгоритма 4.2.1.
Предварительная  часть  алгоритма [J ,K ]:=BYT[J,K]; P:=PAT[J,K];
Q:=(1+P)*(1+P) (14) Сперва при помощи вычислений с использованием
J получают H , H и H , из которых получают X , V и S. J1 :=MUL1(J
,J  );  J2 :=MUL2(J ,J ); J1 :=MUL1(J1 ,J1 ); J2 :=MUL2(J2 ,J2 );
J1  :=MUL1(J1  ,J1  ); J2 :=MUL2(J2 ,J2 ); J1 :=MUL1(J1 ,J1 ); J2
:=MUL2(J2  ,J2  );  (15)  H  :=XOR(J1  ,J2 ); H :=XOR(J1 ,J2 ); H
:=XOR(J1 ,J2 ); (16) Из аналогичных вычислений с использованием К
получают  H  , H и H , из которых получают Y , W и T. K1 :=MUL1(K
,K  );  K2 :=MUL2(K ,K ); K1 :=MUL1(K1 ,K1 ); K2 :=MUL2(K2 ,K2 );
K1  :=MUL1(K  ,K1  );  K2  :=MUL2(K ,K2 ); K1 :=MUL1(K1 ,K1 ); K2
:=MUL2(K2  ,K2  );  K1  :=MUL1(K1 ,K1 ); K2 :=MUL2(K2 ,K2 ); (17)
H':=XOR(K1  ,K2  );  h :=MUL2(H',Q); H :=XOR(K1 ,K2 ); H :=XOR(K1
,K2  );  (19)  В  заключение  обуславливаем результаты при помощи
функции  BYT  [X  ,Y  ]:=BYT[H ,H ]; [V ,W]:= BYT[H ,H ]; [S,T]:=
BYT[H  ,H  ];  (20)  4.2.2.  Главный  цикл  Этот цикл выполняется
поочередно  для  каждого  блока  сообщения  М  . В дополнение к М
основными  используемыми  значениями  являются  Х и Y, а основной
результат  -  это новые значения Х и Y. Также используются V и W,
причгм V изменяется при каждом обращении. Начальные значения X, Y
и  V  получают  в предварительной части алгоритма. Для того чтобы
снова  использовать  те  же  ключи,  начальные  значения Х, Y и V
должны  сохраняться.  Их  обозначают  как , Y и V и используют на
шаге  инициализации:  X:=X , Y:=Y , V:=V , после которого главный
цикл   выполняется  первый  раз.Заключительная  часть  алгоритма,
которая  используется  после  обработки  всех  блоков сообщения в
течение  n  прогонов  главного  цикла,  описана  в разделе 4.2.3.
Примечание:  программа  показана  в  виде колонок, чтобы пояснить
параллельность   операций,   однако  ег  следует  читать  обычным
образом,  слева  направо  каждую  строку. V:=CYC(V); E:=XOR(V,W);
(21)  X:=XOR(X,M  ); Y:=XOR(Y,M ); (22) F:=ADD(E,Y); G:=ADD(E,X);
F:=OR(F,A);    G:=OR(G,B);    F:=AND(F,C);    G:=AND(G,D);   (23)
X:=MUL1(X,F);  Y:=MUL2A(Y,G);  (24) Числа A, B, C и D - константы
(в  16-ричном обозначении): константа А : 0204 0801 константа B :
0080  4021  константа  C  :  8FEF  7FDF  константа  D : 7DFE FBFF
Примечание:  строка  (21)  -  общая  для обоих путей. Строка (22)
вводит  блок сообщения М . Строка (23) подготавливает умножители,
и  строка (24) генерирует новые значения Х и Y. Изменяются только
X,  Y  и V для использования в следующем цикле. F и G - локальные
переменные.  Поскольку  константа D имеет нулевой старший разряд,
то  G<2**31, а это обеспечивает правильность результата для MUL2A
в  строке  (24).  4.2.3.  Заключительная  часть  алгоритма  После
обработки  последнего  блока сообщения М главный цикл выполняется
для  блока  S,  а затем для блока Т, т.е. М =S, M =T. После этого
вычисляется  МАС: Z=XOR(X,Y), и алгоритм завершается. Примечание:
для  дальнейших  вычислений  МАС  без  повторения предварительной
части  алгоритма (вычислений с ключами) значения X , Y , V , W, S
и  T  сохраняются  до  смены  ключей.  5. Описание режимов работы
Сообщения  длиной  более  1024  байт разбиваются на блоки по 1024
байта  и  сцепляются, как показано ниже. Для первого блока длиной
1024  байта формируется МАС (4 байта). Значение МАС приписывается
(но  не  передагтся)  второму  блоку,  и результирующие 1028 байт
аутентифицируются.   Процедура  приписывания  МАС  каждого  блока
следующему блоку продолжается до достижения последнего блока (его
длина  необязательно 1024 байта). Результирующий МАС используется
для   передачи   в   качестве  МАС  сообщения.  ключи  J  K    
зддадддддадддддддддддддддддддд предварительная  предварительная
BYT/PAT        часть        часть:    MUL1           MUL2   
юддбддддбддддбддддбддддбддддбды               хранение  для
зддаддддаддддаддддаддддаддддад  последующего    X  Y  V W S T 
использования   юддбдддддбддддбдддддддддбдддбды             
зддадддддаддддадддд     инициализация  X:=X Y:=Y V:=V   
юддбдддддбддддбдддды     X Y V    зддадддддаддддадW  
 главный цикл  цдддд   сообщение  главный цикл     зд д
  цддддеддедддедддд М юддбддддбддддбддыM           
    (MUL1, MUL2A)     зддаддддаддддаддW      цдддд
        главный  цикл              цддддеддедддедддд М
юддбддддбддддбддыM        юд д ы зд д д д д д дд д    
зддаддддаддддаддW     заключительная  цддддедды  часть  
главный  цикл  S        цдддд     юддбддддбддддбдды   
зддаддддаддддаддW         цдддды   главный цикл T   
цддддддддддды  юддбддддбддддбдды   X Y  здаддддад сброс  
  XOR    V  юдддбдддды   юд д д дд д д д д д ы  Z Рис. Схема
прохождения   данных  ПРИЛОЖЕНИЕ  Примеры  тестов  для  внедрения
алгоритма  (не является частью стандарта) А.0 Введение Приводятся
простые   примеры   тестов   для  большинства  частей  алгоритма.
Используемые  данные  не всегда реалистичны, т.е. они не являются
значениями,  которые  могли  быть  выработаны предыдущими частями
алгоритма,  и также используются искусственные значения констант.
Это  сделано  для упрощения тестов; их можно проверить при помощи
карандаша  и  бумаги,  и,  следовательно,  не  требуется проверка
алгоритма  при  внедрении  путгм  сравнения  одного  внедрения  с
другим.  Тестируются  следующие  части:  -  MUL1,  MUL2, MUL2A; -
BYT[X,Y]  и  PAT[X,Y];  -  предварительная  часть, за исключением
начальной операции BYT[J,K]; - главный цикл. Заключительная часть
не  тестируется,  так  как  она  содержит  только  главный цикл и
операцию  XOR.  Для проверки всего алгоритма приводятся некоторые
результаты  испытательного  внедрения.  А.1.  Примеры  тестов для
MUL1,  MUL2,  MUL2A  Предполагается, что операции умножения будут
проверяться  с  очень  маленькими  и  очень большими числами. Для
получения  больших  чисел  в  примерах используется дополнение до
единицы.  Таким  образом, если a - маленькое число (скажем, менее
4096),  то  обозначение  a  используется  для  его  дополнения до
единицы,  т.е.  2**32-1-a.  Для малых чисел a и b все три функции
умножения  дают  их  действительное произведение a*b. Для больших
чисел   функции   могут   дать   разные   результаты.  Необходимо
тестирование  для MUL(x,y) и MUL(y,x), чтобы сравнить результаты.
А.1.1.  Тесты  для  MUL1  По  модулю  2**32-1  арифметическое a в
действительности   равно  a,  поэтому  результаты  очень  простые
MUL1(a,b)=MUL1(a,b)=a*b MUL1(a,b)=a*b Примеры тестирования даны в
таблице    1.    А.1.2.    Тесты   для   MUL2   MUL2(a,b)=a*b-b+1
MUL2(a,b)=a*b-a+1 MUL2(a,b)=a*b-a-b+1 Примеры тестирования даны в
таблице  1.  А.1.2.  Тесты для MUL2A Результаты такие же, как для
MUL2,  при  тестировании  с  числами в пределах их диапазона. Для
больших  чисел  надо  использовать a и b-2**31 MUL2A(a,b)=a*b-b+1
MUL2A(a,b)=a*b-a+1 MUL2(a,b-2**31)=2**31*(1-p)+a*b+p-b-1, где p -
контроль  по  чгтности  a;  его  младший  бит. Таким образом, для
чгтных  значений a результат равен 2**31+a*b-b-1,а для нечгтных -
a*b-b.  Примеры  тестирования  даны в таблице 1. Таблица 1. Тесты
для      функций      умножения      (числа      -     16-ричные)
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
функция                a                b               результат
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
MUL1  0000 000F 0000 000E 0000 0002 FFFF FFF0 0000 000E FFFF FF2D
FFFF  FFF0 FFFF FFF1 0000 0002 MUL2 0000 000F 0000 000E 0000 0002
FFFF FFF0 0000 000E FFFF FF3A FFFF FFF0 FFFF FFF1 0000 00?? MUL2A
0000  000F 0000 000E 0000 0002 FFFF FFF0 0000 000E FFFF FF3A 7FFF
FFF0   FFFF  FFF1  8000  00C2  FFFF  FFF0  7FFF  FFF1  0000  00C4
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
A.2.  Примеры  тестов  для  BYT  и  PAT В таблице 2 приведены три
случая  тестирования  этих  функций. Таблица 2. Тесты для функций
BYT  и PAT дддддддддддддддддддддддддддддддддддддддддддд функция X
Y  дддддддддддддддддддддддддддддддддддддддддддд [X,Y] 00 00 00 00
00  00  00  00  BYT[X,Y]  01  03  07  0F  1F 3F 7F FF PAT[X,Y] FF
дддддддддддддддддддддддддддддддддддддддддддд [X,Y] FF FF FF 00 FF
FF  FF  FF  BYT[X,Y]  FE  FC  07  F0  E0  C0  80  00  PAT[X,Y] FF
дддддддддддддддддддддддддддддддддддддддддддд [X,Y] AB 00 FF CD FF
EF  00  01  BYT[X,Y]  AB  01  FC  CD  F2  EF  35  01  PAT[X,Y] 6A
дддддддддддддддддддддддддддддддддддддддддддд  A.3. Примеры тестов
для  предварительной части алгоритма Пример приведен в таблице 3.
Начальная  операция  BYT(J,K) не тестируется. Предполагается, что
результаты  из  строки  (14) такие: J =0000 0100 K =0000 0080 P=1
Таблица  3.  Тесты  для  строк  (15)-(20)  предварительной  части
ддддддддддбддддддддддддддбдддддддддддбддддддддддддддддддддддд  J1
 0001 0000  J2  0001 0000 J1  0000 0001  J2  0000 0002 J1 
0001  0000    J2    0002  0000  J1  0000 0001  J2  0000 0004
ддддддддддадддддддбддддддадддддддддддаддддддддддддддддддддддд H 
0000     0003    H        0003    0000    H        0000    0005
ддддддддддбдддддддаддддддбдддддддддддбддддддддддддддддддддддд  K1
 0000 4000  K2  0000 4000 K1  1000 0000  K2  1000 0000 K1 
0000  0008   K2  0000 0010 K1  0002 0000  K2  0004 0000 K1 
8000        0000                K2              0000       0002
ддддддддддадддддддбддддддадддддддддддаддддддддддддддддддддддд H 
0000  0018  H    0000  0060  (Q=4)  H   0006 0000 H  8000 0002
ддддддддддбдддддддаддддддддддддддбдддддддддддбддддддддддддддд  [X
,Y  ]    0103 0703 1D3B 7760 PAT[X ,Y ] EE(1110 1110) [V ,W] 
0103  060B 1706 5DBB PAT[V ,W]  BB(1011 1011) [S,T]  0103 0705
8039       7302       PAT[S,T]              E6(1110       0110)
ддддддддддаддддддддддддддддддддддадддддддддддаддддддддддддддд
Значения    PAT,    получаемые   из   обусловленных   результатов
предварительной  части,  приводятся  в  проверочных  целях, но не
используются  в алгоритме. А.4. Примеры тестов для главного цикла
В  таблице  4  даны  три  примера одноблочных сообщений, при этом
используются  маленькие  и  большие  числа  при соглашении, что a
равно  2**32-1. В третьем примере показаны два случая для больших
чисел,которые  должны  иметь  нулевой  32-й  бит,  показанный как
2-2**31  и  3-2**31  соответственно.  Возможна  запись  2**31-2 и
2**31-3   соответственно.  Для  сохранения  малых  величин  чисел
используются искусственные величины констант A, B, C и D. Примеры
для    одноблочных   сообщений   сопровождаются   примерами   для
тргхблочных  сообщений  в  целях  проверки правильного сохранения
величин  X, Y и W. Последние циклы заключительной части для S и T
не включены в таблицу. Таблица 4. Тесты для главного цикла (числа
-                                                     десятичные)
ддддддддддддддддддддддддддддддддддбддддддддддддддддддддддддддддд
одноблочные      сообщения            тргхблочные      сообщения
дддддддддбдддддддбдддддддбддддддддедддддддбдддддддбддддддддбдддд
A  B  4 1  1 4  1 2  2 1  2 1  2 1  C D  8 4  6 3  1 2*
 4 4  4 4  4 4  V W  3 3  3 3  7 7  1 1  2 1  4 1  X Y
 2 3  2 3  2 3  1 2  3 2 20 9  M  5  1  8  0  1  2 
дддддддддедддддддедддддддеддддддддедддддддедддддддеддддддддедддд
V   6  6  14  2  4  8  CYC E  5  5  9  3  5  9  XOR
X  Y  7 6  3 2 10 11  1 2  2 3  22 11 XOR F G 11 12  2 1
 2 1  5 4  8 7  20 31 ADD F G 15 13  3 5  2 1  7 5 10 7
  22  31 OR F G  7 9  1 4  3 3*  3 1 10 3  18 27 AND X Y
49 54  3 5 30 30  3 2 20 9 396 297 MUL Z  7  6  0  1 
29                            165                           XOR
дддддддддадддддддадддддддаддддддддадддддддадддддддаддддддддадддд
*  означает  -2**31  A.5.  Примеры  тестов  для всего алгоритма В
таблице  5 даны четыре примера тестирования внедргнного алгоритма
для двухблочных сообщений. Для облегчения проверки затабулированы
промежуточные  результаты:  результаты  предварительной  части  и
значения X и Y после каждого прохождения главного цикла, т.е. для
М   ,   М  ,  S  и  T.  Таблица  5.  Тесты  для  всего  алгоритма
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд   J
00FF  00FF  00FF  00FF  5555 5555 5555 5555 K 0000 0000 0000 0000
5A35                 D667                5A35                D667
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд   P
FF FF 00 00 X 4A64 5A01 4A64 5A01 34AC F886 34AC F886 Y 50DE C930
50DE  C930  7397  C9AE  7397 C9AE V 5CCA 3239 5CCA 3239 7201 F4DC
7201   F4DC   W   FECC   AA6E  FECC  AA6E  2829  0408  2829  0408
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд   M
5555  5555  AAAA  AAAA  0000 0000 FFFF FFFF X 48B2 04D6 6AEB ACF8
2FD7  6FFB  8DC8  8BDE  Y 5834 A585 90B1 5CF6 560D 91CE F64E 56DD
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд   M
AAAA  AAAA  5555  5555  FFFF FFFF 0000 0000 X 4F99 BE01 270E EDAF
A70F  C148  C8C8  65BA  Y BE9F 0917 B814 2629 1D10 D8D3 0297 AF6F
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд   S
51ED  E967  51ED  E967  9E2E 7B36 9E2E 7B36 X 3449 25FC 2990 7CD8
B1CC  1CC5  3CF3  A7D2  Y D891 0280 BA92 DB12 29C1 485F 160E E8B5
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд   T
24B6  6FB5  24B6  6FB5  1364 7149 1364 7149 X 277B 4B25 2BEA DCB3
288F  C785  D048  2465  Y D636 250D 8101 0CA3 9115 A558 7060 EC6E
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд   Z
F14D     6E28     A908     D410     B99A     52DE    A018    C83B
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд Ряд
тестов  для  всего  алгоритма  приведгн  в  таблице 6. J и K были
выбраны  таким  образом,  чтобы  после  обуславливания появлялись
длинные  последовательности нулей. Сообщение состоит из 20 блоков
нулей.   Приводятся   промежуточные  значения  Х  и  Y,  а  также
аутентификатор  Z.  J=8001 8001, K=8001 8000 (все блоки сообщения
нулевые)   Таблица   6.   Тест   для   сообщения   из  20  блоков
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
блок                    Х                   Y                   Z
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд   1
303F F4AA 1277 A6D4 2 56DD 063F 4C49 AAE0 3 51AF 3C1D 5BC0 2602 4
A44A AAC0 63C7 0DBA 5 4D53 901A 2EB0 AC30 6 5F3B EEF1 2A60 91AE 7
F023  9DD5  3DD8 1AC6 8 EB35 B97F 9372 CDC6 9 4DA1 24A1 C6B1 317E
10  7F83  9578 74B3 9176 11 11A9 D254 D786 34BC 12 D880 4CA5 FDC1
A88A  13  3F69 7248 11AC 46B8 14 ACBC 13DD 33D5 A468 15 4CE9 33E1
C21A  1B46  16 C1ED 90DD CD95 9B46 17 3CD5 4DEB 613F 8E2A 18 BBA5
7835  07C7  2EAA  19 D794 3FDC 6AD6 E8A4 20 56BA 06C2 9189 6CFA S
1D9C   9056   98D1   CC75   T  7BC1  80AB  A0B8  7B77  D879  FBDC
ддддддддддддддддддддддддддддддддддддддддддддддддддддддддддддд
 

Оставит комментарий