Ім'я файлу: Лр2.docx
Розширення: docx
Розмір: 149кб.
Дата: 10.02.2023
скачати

Лабораторна робота №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();

}

}

}
Результат роботи програмного коду:



Загальна структурна схема алгоритму роботи створеного програмного коду:



Висновки: Лабораторна работа дозволила на практиці зрозуміти та реалізувати нам симетричні криптосистеми Цезаря.
скачати

© Усі права захищені
написати до нас