Лабораторна робота №2 Тема:«Програмна реалізація традиційних симетричних криптосистем» Мета роботи:Програмні реалізації традиційних симетричних криптосистем Цезаря Виконання роботи: Програмний код: using System; namespace Tsezar_One { class Program { static void Main(string[] args) { string s; // рядок відкритого тексту int dsp; // зсув const int m = 27; // модуль char[] mltd = new char[m] { 'a', 'b', 'c','d','e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' '}; // множина символів відкритого тексту char[] mltd_ = new char[m] { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '}; // множина символів приватного тексту Console.WriteLine("Введіть повідомлення до 27 символів включно"); s = Console.ReadLine(); char[] prvt_m = new char[s.Length]; char[] open_m = new char[s.Length]; Console.WriteLine("Сума значення зміщення та символів кодового слова повинна бути меншою або дорівнювати 27 символам!"); Console.Write("Введіть кодове слово..."); string pv = Console.ReadLine(); //рядок з приватним словом Console.Write("Введіть число від 1 до 26 : "); dsp = int.Parse(Console.ReadLine()); for (int i = 0; i < pv.Length; i++) mltd_[ (i+dsp)%m ]= pv[i]; int pointer = dsp+pv.Length; for (int i = 0; i < m; i++) if (Array.IndexOf(mltd_, mltd[i]) == -1) mltd_[(pointer++)%m] = mltd[i]; Console.WriteLine("Утворені множини:"); for (int j = 0; j < m; j++) Console.Write(mltd[j]); Console.WriteLine(); for (int j = 0; j < m; j++) Console.Write(mltd_[j]); Console.WriteLine(); //Шифрування for (int i = 0; i < s.Length; i++) for (int j = 0; j < m; j++) if (s[i] - mltd[j] == 0) prvt_m[i] = mltd_[j]; Console.Write("Приватне повідомлення: "); for (int i = 0; i < s.Length; i++) Console.Write(prvt_m[i]); Console.WriteLine(); //Розшифрування Console.Write("Розшифроване повідомлення: "); for (int i = 0; i < prvt_m.Length; i++) for (int j = 0; j < m; j++) if (prvt_m[i] - mltd_[j] == 0) { open_m[i] = mltd[j]; Console.Write(open_m[i]); } Console.WriteLine(); } } } Результат роботи програмного коду: Загальна структурна схема алгоритму роботи створеного програмного коду: Висновки: Лабораторна работа дозволила на практиці зрозуміти та реалізувати нам симетричні криптосистеми Цезаря. |