Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Реализация алгоритма DES на C#

Реализация алгоритма DES на C#

Презентация используется на дополнительных курсах получения удостоверения по профессии Программист в ОПК СТИ НИТУ МИСиС

21.12.2017

Содержимое разработки

Алгоритм шифрования DES

DES – блочный алгоритм, то есть при шифровании исходное сообщение переводится в двоичный код, а затем разбивается на блоки и каждый блок отдельно зашифровывается (расшифровывается). По стандарту (принят в 1977 году) размер блока DES равен 64 бита, то есть используя 8-ми битовую кодировку ASCII, применяемую в те времена, получим в одном блоке – 8 символов.

Теперь же в основном используется 16-ти битная кодировка Юникода (UTF-16), поэтому, чтобы сохранить длину блока равную 8-ми символам, увеличим размер блока DES до 128 бит.

Итак, для того, чтобы зашифровать сообщение алгоритмом DES, необходимо выполнить следующую последовательность шагов:

довести исходное сообщение до такого размера (в битах), чтобы оно нацело делилось на размер блока (sizeOfBlock = 128 бит);

разделить исходное сообщение на блоки;

довести длину ключа до длины половины блока;

перевести ключ в бинарный формат (в нули и единицы);

провести над каждым блоком прямое преобразование сетью Фейстеля в течении 16-ти раундов. После каждого раунда необходимо выполнять циклический сдвиг ключа на заданное количество символов;

соединить все блоки вместе; таким образом получим сообщение, зашифрованное алгоритмом DES.

shiftKey (при расшифровке key i-1  = key i  Прямое преобразование сетью Фейстеля " width="640"

Алгоритм DES

Чтобы вам было понятнее, давайте рассмотрим один раунд прямого преобразования сетью Фейстеля.

На i-й итерации исходный блок делится пополам – левая часть обозначается L, правая R. Над R и ключом k i  вычисляется какая-либо выбранная логическая функция f (мы будем использовать XOR). Затем выполняется вычисление логической операции “исключающее или” над L и вычисленным ранее значением функции (L xor f). Старое значение R переносится в левую часть блока, а в правую часть заносится значение L xor f. И последняя операция раунда – нужно выполнить циклический сдвиг ключа: key i+1  = key i   shiftKey (при расшифровке key i-1  = key i  

Прямое преобразование сетью Фейстеля

Алгоритм DES Обратное преобразование сетью Фейстеля

Алгоритм DES

Обратное преобразование сетью Фейстеля

Форма приложения шифрования textBoxEncodeKeyWord textBoxDecodeKeyWord buttonEncrypt buttonDecipher

Форма приложения шифрования

textBoxEncodeKeyWord

textBoxDecodeKeyWord

buttonEncrypt

buttonDecipher

 private const int sizeOfBlock = 128; //в DES размер блока 64 бит, но поскольку в unicode символ в два раза длинее, то увеличим блок тоже в два раза  private const int sizeOfChar = 16; //размер одного символа (in Unicode 16 bit)  private const int shiftKey = 2; //сдвиг ключа  private const int quantityOfRounds = 16; //количество раундов  string[] Blocks; //сами блоки в двоичном формате

private const int sizeOfBlock = 128; //в DES размер блока 64 бит, но поскольку в unicode символ в два раза длинее, то увеличим блок тоже в два раза

private const int sizeOfChar = 16; //размер одного символа (in Unicode 16 bit)

private const int shiftKey = 2; //сдвиг ключа

private const int quantityOfRounds = 16; //количество раундов

string[] Blocks; //сами блоки в двоичном формате

in.txt out1.txt out2.txt

in.txt

out1.txt

out2.txt

-80%
Курсы дополнительного образования

Создание динамических веб-страниц с помощью PHP и MySQL

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Реализация алгоритма DES на C# (467.74 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт