You are on page 1of 4

Київський національний університет імені Тараса Шевченка

Факультет інформаційних технологій


Кафедра кібербезпеки і захисту інформації

Лабораторна робота № 1
з дисципліни “Криптографічні системи захисту інформації ”

Виконав:
студент академічної групи КБ-32
Стецюк Євгеній Олегович
Перевірив:
Фесенко А. О.

Київ 2020
Тема: Ознайомлення з методом шифрування даних «Шифр Цезаря».

Мета: Знати та вміти використовувати метод шифрування даних «Шифр


Цезаря»

Завдання до лабораторної роботи №1

Написати програму для шифрування за допомогою метода «Шифр Цезаря». Необхідно


реалізувати як шифрування так і дешифрування.

Теритичні відомості

Шифр Цезаря, також відомий , як шифр зсуву , код Цезаря або зсув Цезаря – один з
найпростіших і найбільш широко відомих методів шифрування. Шифр названий на
честь римського імператора Гая Юлія Цезаря, який використав його для секретного
листування зі своїми генералами.
Шифр Цезаря (Caezar, 100-44 рр. до н.е.) реалізує кодування фрази шляхом «зрушення»
усіх букв фрази на певне число (у оригінальному шифрі Цезаря це число дорівнювало
3). Наприклад , у шифрі із зсувом 3 А була б замінена на Г , Б стане Д , і так далі.

Хід роботи:
static void Main(string[] args)
{

#region variables

string[] abc = new string[] { "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" };
string a = " ";
int b = 0;
int dec = 0;

#endregion

#region mainconten

Console.Write("Ener metod(enc/dec): ");


string check = Console.ReadLine();

switch(check)
{
case "enc":
Console.Write("Ener word for Encrypt: ");
a = Console.ReadLine();
Console.Write("Enter key: ");
b = Convert.ToInt32(Console.ReadLine());

if(b < 0 && b < abc.Length)


{
b = abc.Length - b;
} else if(b >= abc.Length)
{
b = b % abc.Length;
}

for (int i = 0; i < a.Length; i++)


{
char[] chars = a.ToCharArray();
chars[i] = EnCrypt(chars[i], b);
a = new string(chars);
}
break;

case "dec":
Console.Write("Ener word for DeCrypt: ");
a = Console.ReadLine();
Console.Write("Enter key: ");
b = Convert.ToInt32(Console.ReadLine());

if (b < 0 && b < abc.Length)


{
b = abc.Length - b;
}
else if (b >= abc.Length)
{
b = b % abc.Length;
}

for (int i = 0; i < a.Length; i++)


{
char[] chars = a.ToCharArray();
//Console.WriteLine(chars[i] + " " + b);
chars[i] = DeCrypt(chars[i], b);
a = new string(chars);
}
break;
}

Console.WriteLine(a);

#endregion

#region function

char EnCrypt(char c, int d)


{
char cd = ' ';
for (int i = 0; i < abc.Length; i++)
{
if(c == Convert.ToChar(abc[i]))
{
//Console.WriteLine("Check1: " + c);
if(i + d >= abc.Length)
{
dec = i + d;
dec -= abc.Length;
}
else
{
dec = i + d;
}
//Console.WriteLine("Check2: " + dec);
cd = Convert.ToChar(abc[dec]);
//Console.WriteLine("Check3: " + cd);
return cd;
}
}
cd = c;
return cd;

char DeCrypt(char c1, int d1)


{
char cd1 = ' ';
for (int i = 0; i < abc.Length; i++)
{
if (c1 == Convert.ToChar(abc[i]))
{
//Console.WriteLine("Check1: " + c1);
if (i - d1 < 0)
{
dec = abc.Length + i - d1;
}
else
{
dec = i - d1;
}
//Console.WriteLine("Check2: " + dec);
cd1 = Convert.ToChar(abc[dec]);
//Console.WriteLine("Check3: " + cd1);
return cd1;
}
}
cd1 = c1;
return cd1;
}

#endregion

Висновок:
В цій лабораторній роботі, було ознайомлено з методом шифрування даних «Шифр
Цезаря», та написано програму для шифрування за допомогою метода «Шифр Цезаря»,
де було реалізовано шифрування так і дешифрування. В коді я перевіряю ключ та
перетворюю його для застосування в своєму коду. Та роблю перевірку на букви та
символи.

You might also like