Лабораторная работа: Алгоритм формирования ключей в процессе функционирования DES

Оглавление

Техническое задание. 3

Алгоритм формирования ключей в процессе функционирования DES. 3

Работа алгоритма. 4

1 шаг. Перестановки битов ключа с использованием таблицы перестановок. 5

2 шаг. Разбиение ключа. 6

3 шаг. Создание 16-ти подключей путем сдвига. 7

4 шаг. Перестановка битов ключа с использованием таблицы PC1. 8

Исходный код. 9

Пример работы программы.. 15


Техническое задание

1. Реализовать алгоритм формирования ключей в процессе функционирования DES на языке программирования C++.

2. Провести тест программы.

Алгоритм формирования ключей в процессе функционирования DES

Формирование ключей – алгоритм, позволяющий получить по относительно короткому ключу шифрования последовательность раундовых ключей.

Входные данные: Ключ состоит из 8 символов или 8 байт. Соответственно ключ имеет размер 64 байта. Но размер ключа используется только для записи (для организации данных). Фактически, каждый 8 бит отбрасывается и эффективный размер ключа – 56 бит.

Работа алгоритма

1 шаг. Перестановки битов ключа с использованием таблицы перестановок.

Для примера введем:

olga1234

Заданный ключ в двоичном представлении:

0110111101101100011001110110000100110001001100100011001100110100

В начале над ключом шифра выполняется операция B, которая сводится к выбору определенных бит и их перестановке, как это показано в таблицей. Причем, первые четыре строки определяют, как выбираются биты последовательности C(0) (первым битом C(0) будет бит 57 бит ключа шифра, затем бит 49 и т.д., а последними битами биты 44 и 36 ключа шифра), а следующие четыре строки – как выбираются биты последовательности D(0) (т.е. последовательность D(0) будем состоять из битов 63,55,…, 12, 4 ключа шифра).

57 49 41 33 25 17 9
1 58 50 42 34 26 18
10 2 59 51 43 35 27
19 11 3 60 52 44 36
63 55 47 39 31 23 15
7 62 54 46 38 30 22
14 6 61 53 45 37 29
21 13 5 28 20 12 4

В результате перестановки ключ будет выглядеть так:

00001111111111111111000000000101110101100101100001110011

2 шаг. Разбиение ключа

На этом шаге осуществляется разбиение ключа на 2 половины C0 и D0 . Каждая половина содержит 28 бит.

C0 :

0000111111111111111100000000

D0 :

0101110101100101100001110011

3 шаг. Создание 16-ти подключей путем сдвига

После определения C(0) и D(0) рекурсивно определяются C(i) и D(i), i=1,2,…, 16. Для этого применяются операции сдвига влево на один или два бита в зависимости от номера шага итерации, как это показано в таблице «Функция сдвига Si». Операции сдвига выполняются для последовательностей C(i) и D(i) независимо. Например, последовательность C(3) получается, посредством сдвига влево на две позиции последовательности C(2), а последовательность D(3) – посредством сдвига влево на две позиции последовательности D(2). Следует иметь в виду, что выполняется циклический сдвиг влево. Например, единичный сдвиг влево последовательности C(i) приведет к тому, что первый бит C(i) станет последним и последовательность бит будет следующая: 2,3,…, 28,1.

Таблица «Функция сдвига Si»

1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

--> ЧИТАТЬ ПОЛНОСТЬЮ <--

К-во Просмотров: 389
Бесплатно скачать Лабораторная работа: Алгоритм формирования ключей в процессе функционирования DES