Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: CL | DM;

Вниз

Криптография (гост 28 147-89)   Найти похожие ветки 

 
navinaiv   (2006-05-25 23:00) [0]

Уважаемые мастера помогите разобраться с написанием процедуры основного шага к алгоритму ГОСТ 28147-89.

Последовательность шагов излагаю ниже.

Шаг 0. Определяет исходные данные для основного шага криптопреобразования:
• N – преобразуемый 64-битовый блок данных, в ходе выполнения шага его младшая (N1) и старшая (N2) части обрабатываются как отдельные 32-битовые целые числа без знака.  Таким образом, можно записать N=(N1,N2).
• X – 32-битовый элемент ключа;
Шаг 1. Сложение с ключом.  Младшая половина преобразуемого блока складывается по модулю 232 с используемым на шаге элементом ключа, результат передается на следующий шаг;
Шаг 2. Поблочная замена.  32-битовое значение, полученное на предыдущем шаге, интерпретируется как массив из восьми 4-битовых блоков кода: S=(S0,S1,S2,S3,S4,S5,S6,S7).
Далее значение каждого из восьми блоков заменяется на новое, которое выбирается по таблице замен следующим образом: значение блока Si заменяется на Si-тый по порядку элемент (нумерация с нуля) i-того узла замен (т.е. i-той строки таблицы замен, нумерация также с нуля).  Другими словами, в качестве замены для значения блока выбирается элемент из таблицы замен с номером строки, равным номеру заменяемого блока, и номером столбца, равным значению заменяемого блока как 4-битового целого неотрицательного числа.  Теперь становится понятным размер таблицы замен: число строк в ней равно числу 4-битных элементов в 32-битном блоке данных, то есть восьми, а число столбцов равно числу различных значений 4-битного блока данных, равному как известно 24, шестнадцати.
Шаг 3. Циклический сдвиг на 11 бит влево.  Результат предыдущего шага сдвигается циклически на 11 бит в сторону старших разрядов и передается на следующий шаг.  На схеме алгоритма символом 11 обозначена функция циклического сдвига своего аргумента на 11 бит в сторону старших разрядов.
Шаг 4. Побитовое сложение:  значение, полученное на шаге 3, побитно складывается по модулю 2 со старшей половиной преобразуемого блока.
Шаг 5. Сдвиг по цепочке:  младшая часть преобразуемого блока сдвигается на место старшей, а на ее место помещается результат выполнения предыдущего шага.
Шаг 6. Полученное значение преобразуемого блока возвращается как результат выполнения алгоритма основного шага криптопреобразования.


 
han_malign ©   (2006-05-26 12:42) [1]

все переменные 32-бит целые, со знаком или без - по барабану(лучше явно LongInt, LongWord, чем generic Integer/Cardinal)...

step1:= N1 + key;//модуль 2^32, обеспечивается, собственно, 32-бит размером

step2:= 0;
for i:= 0 to 7 do begin
   step2:= step2 or ((rtbl[i,step1 and $F] and $F) shl i*4);
   step1:= step1 shr 4;
end;

step3:= (step2 shl 11) or (step2 shr 21);//дабы не отходить от нотации Delphi
//или step3:= step2; asm rol step3,11 end;

step4:= step3 xor N2;

{5}
N2:= N1; N1:= step4;
{6}

Надеюсь с 64-бит блоком сам разберешься?
Лишние промежуточные stepX, естественно, можно выкинуть, они тут для наглядности...


 
palva ©   (2006-05-26 20:58) [2]

Здесь реализация на паскале
http://pa123.nm.ru/
Правда, основной шаг в основном на ассемблерных вставках.



Страницы: 1 вся ветка

Текущий архив: 2006.07.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.04 c
2-1151053682
elfebet
2006-06-23 13:08
2006.07.09
Не пойму ошибку и как выйти из ситуации.


15-1150188027
tesseract
2006-06-13 12:40
2006.07.09
Разработчик freebsd нуждается в помощи


15-1150172793
fun.exe
2006-06-13 08:26
2006.07.09
SQL в Delphi


15-1150028106
rgrded
2006-06-11 16:15
2006.07.09
Отправить sms через smtp сервер


2-1150449361
salexn
2006-06-16 13:16
2006.07.09
В чем причина ошибки