Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Блочные алгоритмы шифрования ГОСТ и DES

Реализация алгоритма

1. Запускаем desfull.exe и вводим исходные данные (рис. 3.4).

Дан ключ шифрования: 8615240716 и значение 64-х битового открытого текста: T = 6758270711.

Ввод исходных данных

Рисунок 3.4 - Ввод исходных данных

  • 2. Переводим 6758270711 из dec в bin:
  • 00000000000000000000000000000001100100101101001100000110111101112

С помощью матрицы начальной перестановки IP преобразуем исходный блок Т: биты входного блока Т (64 бита) переставляются в соответствии с матрицей IP.

Получаем: 10100000101100001100000010101000101100001000000000000000111100002 = 1157896647271776280010

Полученная последовательность бит То разделяется на две последовательности: Lo - левые, или старшие, биты, Ro - правые, или младшие, биты - каждая из которых содержит 32 бита (рис. 3.5).

Вводим значение Lo: 101000001011000011000000101010002 = 269593821610

Вводим значение Ro: 101100001000000000000000111100002 = 296117886410

Результаты функции IP

Рисунок 3.5 - Результаты функции IP

3. На каждой итерации используется новое значение ключа Кi - (длиной 48 бит). Новое значение ключа Кi - вычисляется из начального ключа К с помощью функции G. Эта таблица разделена на две части. Результат преобразования G(K) разбивается на две половины Со и Do, по 28 бит каждая.

Переводим ключ К = 8615240716 в двоичную систему. Делим пополам и получаем значение С0 и D0.

Co = 00100000000000000100000000002 = 3355545610

Do = 00101000110000001000000000002 = 4273152010

После определения Со и Do рекурсивно определяются Сi и Di; i = 1,2,…, 16. Для этого применяются операции циклического сдвига влево на один или два бита в зависимости от номера шага итерации. Для определения С1 и D1 сдвигаем влево на 1 бит, т.о.

C1 = 6711091210

D1 = 8546304010

Ключ Кi определяемый на каждом шаге итерации, есть результат выбора конкретных бит из 56-битовой последовательности CiDi, и их перестановки. Другими словами, ключ Кi = H(CiDi), где функция Н определяется матрицей, завершающей обработку ключа (рис. 3.6).

Последовательность C1D1:

01000000000000001000000000000101000110000001000000000002,

После преобразований получаем:

K1 = 0100000000000000000000010001001000001000000001012 = 7036876213658110

Исследование схемы генерации ключей

Рисунок 3.6 - Исследование схемы генерации ключей

4. Далее с помощью функции Е расширяем R0 до 48 бит.

Результат: R0 = 2961178864 и ключ К1 имеет значения 7036876213658110.

Переводим значение 296117886410 bin: 101100001000000000000000111100002 и определяем Е в соответствии с таблицей.

В результате преобразований получаем: Е = 0101101000010100000000000000000000010111101000012 = 9904194585180910.

Полученный результат складывается по модулю 2 с текущим значением ключа Кi (результатом этой операции является значение на входе блока S).

Значение на входе блока S:

0101101000010100000000000000000000010111101000012

+

0100000000000000000000010001001000001000000001012

=

  • 0001101000010100000000010001001000011111101001002
  • S = 000110 100001 010000 000001 000100 100001 111110 1001002 = 2867321963306010

На блок S поступает 48-битовый блок, на выходе мы получаем 32-битовый блок. Разбиваем на 8 6-битовых блоков (крайние биты образуют номер строки, центральные - номер столбца в соответствие с таблицей):

S1: 000110 - 1 - 0001

S2: 100001 - 13 - 1101

S3: 010000 - 1 - 0001

S4: 000001 - 13 - 1101

S5: 000100 - 4 - 0100

S6: 100001 - 4 - 0100

S7: 111110 - 2 - 0010

S8: 100100 - 4 - 0100

Получаем значение на выходе блока S:

000111010001110101000100001001002 = 48845725210

Этот 32-битовый блок преобразуется с помощью функции перестановки бит Р.

  • 0 0 0 1 1 1 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

Производим замену: P = 100001000000110001010100011110102 = 221540057010

Результаты заносим в таблицу (рис. 3.7).

Исследование функции шифрования

Рисунок 3.7 - Исследование функции шифрования

5. Значение L1 = 296117886410, так как L1 = R0

R1 = L0 + f (K1, R0)

101000001011000011000000101010002

+

100001000000110001010100011110102

=

001001001011110010010100110100102

R1 = 61633864210

Остальные 15 циклов выполняются автоматически. Получаем L16 и R16:

L16 = 64983285710, R16 = 319784309410

Переводим L16 и R16 в двоичную систему и соединяем. Получается «Значение на входе блока IP-1»

00100110101110111010100110011001101111101001101100110110100101102

= 279101087187908776610

Далее с помощью таблицы функции IP-1 получаем шифротекст:

00110101111110101100101010110111101110111101110000000000101101112 = 388964411866742802310

Результаты заносим в таблицу (рис. 3.8).

Исследование работы криптографического алгоритма DES

Рисунок 3.8 - Исследование работы криптографического алгоритма DES

4. Алгоритм шифрования ГОСТ 28147-89. Режим простой замены

 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 

СКАЧАТЬ ОРИГИНАЛ
Блочные алгоритмы шифрования ГОСТ и DES