Чумаченко А


Реализация симметричного алгоритма блочного шифрования AES



Download 0,68 Mb.
Pdf ko'rish
bet2/3
Sana21.03.2022
Hajmi0,68 Mb.
#504719
1   2   3
Bog'liq
AES

 
Реализация симметричного алгоритма блочного шифрования AES 
Создаём консольное приложение в Visual Studio 2017 и даём ему любое 
имя, в нашем случае приложение называется AES, рисунок 1. 


Рисунок 1 – Создание консольного приложения 
Далее создаём следующие функции в консольном приложении, листинг 1: 
- Encrypt() - функция шифрования данных; 
- Decrypt() - функция дешифрования данных. 
Для использования класса AES необходимо подключить пространство 
имён System.Security.Cryptography к проекту.
Функция Encrypt принимает в качестве параметров 2 аргумента: 
-
имя исходного файла; 
-
имя шифрованного файла, который она создаёт. 
Функция Decrypt принимает в качестве параметров 2 аргумента: 
-
имя шифрованного файла; 
-
имя дешифрованного файла, который она создаёт. 
-
Листинг 1 – Программный код 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using System.Security.Cryptography; 


namespace AES 

class Program 

static void Encrypt(string input, string output) 

StreamReader file = new StreamReader(new FileStream(input, FileMode.Open, FileAccess.Read)); 
string gg = file.ReadToEnd(); 
string EncryptionKey = "test123"; 
byte[] clearBytes = Encoding.Unicode.GetBytes(gg); 
using (Aes encryptor = Aes.Create()) 

Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] 
{ 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 }); 
encryptor.Key = pdb.GetBytes(32); 
encryptor.IV = pdb.GetBytes(16); 
using (MemoryStream ms = new MemoryStream()) 

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

cs.Write(clearBytes, 0, clearBytes.Length); 
cs.Close(); 

input = Convert.ToBase64String(ms.ToArray()); 


StreamWriter SW = new StreamWriter(new FileStream(output, FileMode.Create, FileAccess.Write)); 
SW.Write(input); 
SW.Close(); 

static void Decrypt(string input_t, string output_t) 

StreamReader file = new StreamReader(new FileStream(input_t, FileMode.Open, FileAccess.Read)); 
string gg = file.ReadToEnd(); 
string EncryptionKey = "test123"; 
byte[] cipherBytes = Convert.FromBase64String(gg); 
using (Aes encryptor = Aes.Create()) 

Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] 
{ 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 }); 
encryptor.Key = pdb.GetBytes(32); 
encryptor.IV = pdb.GetBytes(16); 
using (MemoryStream ms = new MemoryStream()) 

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

cs.Write(cipherBytes, 0, cipherBytes.Length); 
cs.Close(); 

Console.WriteLine(Encoding.Unicode.GetString(ms.ToArray())); 
input_t = Encoding.Unicode.GetString(ms.ToArray()); 


StreamWriter SW = new StreamWriter(new FileStream(output_t, FileMode.Create, FileAccess.Write)); 
SW.Write(input_t); 


SW.Close(); 

static void Main(string[] args) 

if (args.Length == 0) 
Console.WriteLine("AES\n"); 
if (args.Length != 0 && args[0] == "-e") Encrypt(args[1], args[2]); 
if (args.Length != 0 && args[0] == "-d") Decrypt(args[1], args[2]); 



Для удобства тестирования приложения создадим бат-файл(start.bat) и 
файл шифруемого сообщения(input.txt) по следующему пути …Visual Studio 
2017 – Projects –
AES– AES – bin – Debug, рисунок 2. 
Рисунок 2 – Файлы 
Содержимое файлов input.txt и start.bat, рисунок 3. 
Рисунок 3 – Содержимое файлов 
Запускаем файл start.bat из папки Debug и видим результаты выполнения 
приложения, рисунок 4. 


Рисунок 4 – Результаты работы приложения 
Рисунок 5 – Содержимое файлов после выполнения приложения 
Данные представленные на рисунках 3 и 5 позволяют предположить, что 
процедуры шифрования и дешифрования реализованы корректно, так как 
дешифрованный файл совпадает с исходным файлом. 

Download 0,68 Mb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish