Хелпикс

Главная

Контакты

Случайная статья





МОСКОВСКИЙ ПРИБОРОСТРОИТЕЛЬНЫЙ ТЕХНИКУМ



 

Министерство науки и высшего образования Российской Федерации

федеральное государственное бюджетное образовательное учреждение высшего образования

"Российский экономический университет имени Г.В. Плеханова"

МОСКОВСКИЙ ПРИБОРОСТРОИТЕЛЬНЫЙ ТЕХНИКУМ

 

 

 ЛАБОРАТОРНАЯ РАБОТА. AES.

Учебной дисциплины: Криптографические средства и методы защиты информации

 

 

Специальность: 10.02.03 Информационная безопасность автоматизированных систем

 

Группа: БИ-1-17

Выполнили: Таскаев М.В.

Проверил: Канакин А.В.

Дата «___» ________2020 г.

                                                                      Оценка ______________

 

 

Москва

Введение

       В данной лабораторной работе будет написана программа, шифрующая и дешифрующая текст методом AES.

Цель работы

       Целью данной работы является практика программирования на языке C#, а также работа с шифром AES.

Выполнение работы

       Начнем с создания формы, на ней будут расположены три текстбокса: для ввода текста, для вывода зашифрованного текста, для вывода дешифрованного текста; и две кнопки: зашифровать и дешифровать (Рисунок 1, “Вид”).

Рисунок 1, "Вид"

       В теле класса формы объявим объект для создания ключа.

AesManaged aeskey = new AesManaged();

       А в конструкторе создадим ключ. Это необходимо для того, чтобы методы шифрования и дешифрования использовали один и тот же ключ (Рисунок 2, “Создание ключа”).

aeskey.GenerateKey();

Рисунок 2, "Создание ключа"

       Теперь рассмотрим метод шифрования.

byte[] encrypt()

   {

       Aes aes = Aes.Create();

       aes.GenerateIV();

 

       aes.Key = aeskey.Key;

 

       byte[] encrypted;

       ICryptoTransform crypt = aes.CreateEncryptor(aes.Key, aes.IV);

       using (MemoryStream ms = new MemoryStream())

       {

           using (CryptoStream cs = new CryptoStream(ms, crypt, CryptoStreamMode.Write))

           {

               using (StreamWriter sw = new StreamWriter(cs))

               {

                   sw.Write(input_text.Text);

               }

           }

 

           encrypted = ms.ToArray();

           return encrypted.Concat(aes.IV).ToArray();

               

       }

   }

       Он возвращает байтовый массив зашифрованных данных, после чего в событии при нажатии на кнопку мы конвертируем его в строку и выводим в текст бокс.

private void button1_Click(object sender, EventArgs e)

   {

       byte[] encrypted;

       encrypted = encrypt();

       cipher_text.Text = Convert.ToBase64String(encrypted);

   }

       Рассмотрим дешифрование. Сначала конвертируется строка в байтовый массив, затем выполняется дешифрование и выводится текст бокс.

private void button2_Click(object sender, EventArgs e)

   {

       try {

           byte[] bytes = Convert.FromBase64String(input_text.Text);

 

           byte[] bytesIv = new byte[16];

           byte[] mess = new byte[bytes.Length - 16];

 

           for (int i = bytes.Length - 16, j = 0; i < bytes.Length; i++, j++) {

               bytesIv[j] = bytes[i];

              }

           for (int i = 0; i < bytes.Length - 16; i++) {

               mess[i] = bytes[i];

           }

           Aes aes = Aes.Create();

 

           aes.Key = aeskey.Key;

 

           aes.IV = bytesIv;

 

           string text = "";

           byte[] data = mess;

           ICryptoTransform crypt = aes.CreateDecryptor(aes.Key, aes.IV);

           using (MemoryStream ms = new MemoryStream(data))

           {

               using (CryptoStream cs = new CryptoStream(ms, crypt, CryptoStreamMode.Read))

               {

                   using (StreamReader sr = new StreamReader(cs))

                   {

 

                       text = sr.ReadToEnd();

                   }

               }

           }

           decipher_text.Text = text;

       }

       catch

       {

 

       }

   }

       Приведем пример работы шифрования (Рисунок 3, “Шифрование”).

Рисунок 3, "Шифрование"

       Теперь расшифруем полученный шифр (Рисунок 4, "Дешифрование").

Рисунок 4, "Дешифрование"

       Функции успешно работают.

Вывод.

       В ходе выполнения задания были получены навыки работы с алгоритмом AES.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.