
IUK6-83_KMZI_LR1
.docx
|
Министерство науки и высшего образования Российской Федерации Калужский филиал федерального государственного бюджетного образовательного учреждения высшего образования «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет)» (КФ МГТУ им. Н.Э. Баумана) |
ФАКУЛЬТЕТ _ИУК «Информатика и управление»
КАФЕДРАИУК6 «Защита информации»
ЛАБОРАТОРНАЯ РАБОТА № 1
Вариант 3
«Исследование традиционных методов симметричного шифрования»
ДИСЦИПЛИНА: «Криптографические методы защиты информации»
Выполнил: студент гр. ИУК6-83 |
_________________ (_) (Подпись) (Ф.И.О.)
|
|
Проверил: |
_________________ (Молчанов А.Н.) (Подпись) (Ф.И.О.)
|
|
Дата сдачи (защиты): Результаты сдачи (защиты): |
||
|
- Балльная оценка: - Оценка: |
Калуга, 2022
Цель работы: сформировать практические навыки применения традиционных методов симметричного шифрования.
Задачи: изучить классические алгоритмы симметричного шифрования. Разработать алгоритмы симметричного шифрования и расшифровывания. Реализовать на их основе программы для защиты текстовых данных.
Задание по варианту 3: Шифрующие таблицы с ключевым словом.
Теоретическая часть
Симметричными называют алгоритмы, в которых шифрование и дешифрование ведется на одном и том же ключе. И этот ключ является секретным. Сам алгоритм зашифровывания, как правило, считается известным всем.
Шифрующие таблицы по числовым или буквенным ключам
В верхней (ключевой) строке таблицы до перестановки записывается ключ, затем столбцы таблицы переставляются в соответствии с алфавитным порядком букв ключа в алфавите или по возрастанию, или убыванию цифр ключа. Затем буквы считываются по строкам, получается блок шифротекста. Пример. Зашифрованное сообщение «ТЕРМИНАТОР ПРИБЫВАЕТ СЕДЬМОГО В ПОЛНОЧЬ» с помощью таблицы 5х7 и ключевого слова «ПЕЛИКАН» представлен на рисунке 1:
Рисунок 1 – Шифрующие таблицы
При считывании содержимого правой таблицы по строкам и записи шифротекста группами по пять букв получим шифрованное сообщение: «ГНВЕП ЛТООА ДРНЕВ ТЕЬИО РПОТМ БЧМОР СОЫЬИ».
Практическая часть
По условию задачи взяты шифрующие таблицы с цифровым и буквенным ключом с использованием русского алфавита. Ключевое слово исключает использование повторяющихся букв. Открытый текст хранится в файле, созданном пользователем. Ключевое слово вводится в процессе работы программы.
В ходе выполнения лабораторной работы была разработана программа для шифрования входного открытого текста с использованием шифрующих таблиц с цифровым и буквенным ключом. Программа реализована в приложении Windows Forms на языке C#. Интерфейс программы представлен на рисунке 2:
Рисунок 2 – Интерфейс программы
Для реализации шифрования или расшифрования файла необходимо выбрать заранее созданный и заполненный данными на русском языке текстовый документ. Введенный в файл cleartext.txt текст (рисунок 3): на краю дороги стоял дуб. он был, вероятно, в десять раз старше берез, составлявших лес, в десять раз толще и в два раза выше каждой березы.
Рисунок 3 – Содержание текстового файла
Следующий этап – ввод ключевого слова в предназначенную для этого ячейку TextBox (рисунок 4).
Рисунок 4 – Ввод ключевого слова
После выбора ключевого слова и текстового файла выполняется шифрование. Заполнение матрицы и вывод зашифрованного результата представлены на рисунке 5:
Рисунок 5 – Шифрование текста
Шифрование происходит следующим образом:
Процесс заполнение матрицы текстом. Код представлен в листинге 1.
Листинг 1 – Процесс заполнение матрицы текстом
while (k != 0)
{
for (int i = 2; i < _it + 2; i++)
{
for (int j = 0; j < _jt; j++)
{
if (k == 0)
{
cryptoTable[i, j] = Convert.ToString("-");
Console.Write(String.Format("{0,3}", cryptoTable[i, j]));
}
else
{
if ((t + ren * ren2) < k2)
{
cryptoTable[i, j] = Convert.ToString(replaced[t + ren * ren2]);
Console.Write(String.Format("{0,3}", cryptoTable[i, j]));
k--;
}
else
{
cryptoTable[i, j] = Convert.ToString("-");
Console.Write(String.Format("{0,3}", cryptoTable[i, j]));
}
t2++;
ren2++;
}
}
t++;
ren2 = 0;
Console.WriteLine();
if (t2 % x == 0)
{
t = t2;
}
}
}
Перестановка столбцов в зависимости от порядка букв в алфавите. Код представлен в листинге 2.
Листинг 2 – Перестановка столбцов
int c = 1;
bool chekin = true;
char symbls = '0';
for (int j = 0; j < m; j++)
{
if (chekin)
{
symbls = (char)(c + 48);
chekin = false;
}
if (symbls == cryptoTable [1,j])
{
for (int i = 0; i < n; i++)
{
CryptoTable2[i, c - 1] = cryptoTable[i, j];
}
c++;
if (c < 6)
j = -1;
else
j = m;
chekin = true;
}
}
textBox2.Text += Environment.NewLine;
for (int i = 2; i < n; i++)
{
for (int j = 0; j < m; j++)
{
probls+= cryptoTable2[i, j];
textBox2.Text += cryptoTable2[i, j];
if (j < m - 1)
textBox2.Text += '\t';
}
textBox2.Text += Environment.NewLine;
}
Зашифрованный текст:
гадрооееанлтнетусьтябякхно,ооуйсндлвкч.саоанягреуцоытзенйсалбпячыео,ейжепмгизужотдсед,нтэ*каьт*аббо*чиыт*
Текст сохраняется в текстовый файл с помощью кнопки «Сохранить». Имя файла задается пользователем (рисунок 6):
Рисунок 6 – Сохранение зашифрованного файла
Содержимое текстового файла представлено на рисунке 7:
Рисунок 7 – Зашифрованный текст
Для расшифровки текста требуется выбрать файл с зашифрованным текстом и ключевое слово (рисунок 8):
Рисунок 8 – Процесс расшифровки
Расшифрованное и сохраненное в текстовый файл сообщение представлено на рисунке 9:
Рисунок 9 – Расшифрованный текст
Расшифровка происходит следующим образом:
Буквы ключевого слова сортируются в порядке возрастания их порядкового номера в алфавите. Изначальный порядок индексов в слове запоминается.
Сохраненный зашифрованный текст из файла заполняет матрицу.
Столбцы сортирутся по изначальному порядку индексов слова.
Расшифрованный текст сохраняется в файл программы.
Вывод: в ходе данной лабораторной работы были сформированы практические навыки применения традиционных методов симметричного шифрования. Реализована программа, осуществляющая шифровку и расшифровку текста методом шифрующих таблиц с ключевым словом.