Алгоритм шифрования данных DES
Автор: Warfat • Май 17, 2023 • Лабораторная работа • 5,741 Слов (23 Страниц) • 214 Просмотры
Лабораторная работа
АЛГОРИТМ ШИФРОВАНИЯ ДАННЫХ DES
Цель работы
Познакомиться с основами симметричного шифрования. Изучить алгоритм шифрования DES на примере упрощенной версии S-DES.
Задания на лабораторную работу
- Изучить основы симметричного шифрования
- Изучить алгоритм шифрования S-DES.
- Написать программы шифрования и расшифрования одного символа с использованием алгоритма S-DES. Ключ и открытый текст вводить с клавиатуры. Промежуточные значения и результат выводить на экран в двоичном виде.
Описание программы
Вычисление подключей S-DES.
В S-DES используется 10-битовый ключ, который должен быть как у отправителя, так и у получателя сообщения. Из этого ключа генерируются два 8-битовых подключа.
[pic 1]
Пример. Пусть имеем на входе следующий ключ К=642(10):
[pic 2]
- Перестановка Р10.
[pic 3] ([pic 4])
- Циклический сдвиг влево на одну позицию. Выполняется отдельно для первых 5-ти битов и отдельно для вторых 5-ти битов.
[pic 5]
- Перестановка Р8.
[pic 6] ([pic 7])
Получаем первый 8-битный подключ [pic 8].
- Циклический сдвиг влево на две позиции.
[pic 9]
- Перестановка Р8.
[pic 10] ([pic 11])
Получаем второй 8-битный подключ [pic 12].
Т.о. получено два подключа, в каждом из которых выделим правую и левую части:
[pic 13]
[pic 14]
Алгоритм шифрования.
[pic 15]
Операция 1: Начальная перестановка [pic 16].
Операции 2: Функция fk. представляет собой комбинацию перестановки и подстановки:
fk.(L, R) = (L⊕ F(R, SK), R),
где L и R – левые и правые 4 бита 8-битовой последовательности, подаваемой на вход fk.;
SK – подключ.
Отображение F.
На входе отображения имеем 4-битовое значение.
а) Сначала выполняется [pic 17] — операция расширения/перестановки: [pic 18], применяется к правой части;
б) [pic 19];
в) применение S-матриц:
[pic 20], [pic 21].
S-матрицы работают следующим образом: 1-ый и 4-ый биты входной последовательности рассматриваются как двухбитовые числа, определяющие строку S-матрицы, 2-ой и 3-ий биты — как числа, определяющие столбец S-матрицы. Элементы, находящиеся на пересечении строки и столбца, задают двухбитовые выходные значения:;
Получаем 4-битовую последовательность;
г) Перестановка [pic 22].
е) XOR(L, P4).
Операция 3: SW – перестановка, меняет местами первые и последние 4 бита..
Операция 4: Функция fk. К полученной последовательности битов применяем операцию 2, с той лишь разницей, что используется подключ [pic 23].[pic 24]
Операция 5: Завершающая перестановка. Является обратной по отношению к начальной.
[pic 25]
На выходе получим 8-битовый блок, который затем преобразуем в символ, который и будет являться зашифрованным.
Для расшифрования используется тот же алгоритм, что и для шифрования, только в операции 2 используется подключ [pic 26], а в операции 4 — подключ [pic 27].
Текст программы
private void button1_Click(object sender, EventArgs e)
{
int[] IP = { 2, 6, 3, 1, 4, 8, 5, 7 };
int[] IP1 = { 4, 1 ,3 ,5 ,7 ,2 ,8 ,6 };
char[] TextIP = new char[8];
char []key=new char[10];
char[] k1 = new char[8];
char[] k2 = new char[8];
char[] L = new char[4];
char[] R = new char[4];
char[] middle = new char[8];
char[] middle1 = new char[4];
char[] CryptText = new char[8];
...