Шифрування даних за допомогою AES

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Захист інформації в комп’ютерних системах

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра ЕОМ / Лабораторна робота №8 з дисципліни «Захист інформації в комп’ютерних системах» на тему: «Шифрування даних за допомогою AES» Мета роботи: Мета роботи – ознайомитись з одним із сучасних симетричних алгоритмів блочного шифрування AES, навчитися його застосовувати для різних типів даних. Завдання: 1. Розробити графічний інтерфейс на мові C# для коду алгоритму реалізації шифрування файлів за допомогою AES (наведений у додатку). 2. Налаштувати алгоритм згідно свого варіанту відповідно до таблиці варіантів. Теоретичні відомості Advanced Encryption Standard (AES) – симетричний алгоритм блочного шифрування (розмір блока 128 біт, ключ 128/192/256 біт), фіналіст конкурсу AES і прийнятий в якості американського стандарту шифрування урядом США. Станом на 2009 рік AES був одним із найпоширеніших алгоритмів симетричного шифрування. AES являє собою симетричний алгоритм шифрування з ключем. Ключ може мати довжину 128, 192 і 256 біт. Алгоритми з ключем довжиною 128, 192 і 256 біт позначаються відповідно як AES-128, AES-192, AES-256. AES-128, AES-192, AES-256 обробляють блоки даних за відповідно 10, 12 та 14 ітерацій. Кожна ітерація (раунд) являє собою визначену послідовність трансформацій. Всі ітерації однакові за виключенням останньої, з якої виключене одне з перетворень. Кожен раунд працює з двома 128-бітними блоками: “поточний” та “ключ раунду”. Всі раунди використовують різні “ключі раунду”, які отримуються за допомогою алгоритму розширення ключа. Цей алгоритм не залежить від даних, які ми шифруємо, і може виконуватися незалежно від фази шифрування/дешифрування. Хід виконання: Варіант №6 Код реалізації алгоритму роботи шифру: using System; using System.Security.Cryptography; using System.IO; namespace AES_Encryption { public class AES { public AES() { } // Encrypt a byte array into a byte array using a key and an IV private byte[] Encrypt(byte[] clearData, byte[] Key, byte[] IV) { // Create a MemoryStream that is going to accept the encrypted bytes MemoryStream ms = new MemoryStream(); Rijndael alg = Rijndael.Create(); alg.Key = Key; alg.IV = IV; CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(clearData, 0, clearData.Length); cs.Close(); byte[] encryptedData = ms.ToArray(); return encryptedData; } /// <summary> /// Returns an encrypted string using Rijndael (128,192,256 Bits). /// </summary> public string Encrypt(string Data, string Password,int Bits) { byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(Data); PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[] {0x00, 0x01, 0x02, 0x1C,0x1D,0x1E,0x03,0x04,0x05,0x0F,0x20,0x21,0xAD,0xAF,0xA4}); if (Bits == 128) { byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(16), pdb.GetBytes(16)); return Convert.ToBase64String(encryptedData); } else if(Bits == 192) { byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(24), pdb.GetBytes(16)); return Convert.ToBase64String(encryptedData); } else if(Bits == 256) { byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16)); return Convert.ToBase64String(encryptedData); } else { return string.Concat(Bits); } } // Decrypt a byte array into a byte array using a key and an IV private byte[] Decrypt(byte[] cipherData, byte[] Key, byte[] IV) { MemoryStream ms = new MemoryStream(); Rijndael alg = Rijndael.Create(); alg.Key = Key; alg.IV = IV; CryptoStream cs = new CryptoStream(ms, alg.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(cipherData, 0, cipherData.Length); cs.Close(); byte[] decryptedData = ms.ToArray(); return decryptedData; } public string Decrypt(string Data, string Password,int Bits) { byte[] cipherBytes = Convert.FromBase64String(Data); PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password, new byte[] {0x00, 0x01, 0x02, 0x1C,0x1D,0x1E,0x03,0x04,0x05,0x0F,0x20,0x21,0xAD,0xAF,0xA4}); if (Bits == 128) { byte[] decryptedData = Decrypt(cipherBytes, pdb.GetBytes(16), pdb.GetBytes(16)); return System.Text.Encoding.Unicode.GetString(decryptedData); } else if(Bits == 192) { byte[] decryptedData = Decrypt(cipherBytes, pdb.GetBytes(24), pdb.GetBytes(16)); return System.Text.Encoding.Unicode.GetString(decryptedData); } else if(Bits == 256) { byte[] decryptedData = Decrypt(cipherBytes, pdb.GetBytes(32), pdb.GetBytes(16)); return System.Text.Encoding.Unicode.GetString(decryptedData); } else { return string.Concat(Bits); } } } } Результат виконання: відкритий текст: / шифрований текст: / Висновок: на лабораторній роботі я ознайомився із шифром AES.
Антиботан аватар за замовчуванням

22.03.2018 19:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!