Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Классические шифры подстановки

Автор:   •  Апрель 17, 2022  •  Лабораторная работа  •  1,682 Слов (7 Страниц)  •  254 Просмотры

Страница 1 из 7

Лабораторная работа №1. Классические шифры подстановки

Цель работы: изучение классических криптографических алгоритмов моноалфавитной и многоалфавитной подстановки; криптоанализ классических шифров на основе гистограмм частот встречаемости символов алфавита; приобретение навыков шифрования информации с использованием простейших методов шифрования.

Ход работы:

  1. Изначально в среде программирования Visual Studia 2017 с использованием инструмента winForms был разработан дизайн приложения(рис. 1)

[pic 1]

Рис. 1 – Дизайн приложения “Шифр”

В текстовое поле в левой части программы вводится текст, который требуется зашифровать или расшифровать, во втором текстовом поле в правой части программы появляется результат работы алгоритма шифрования/дешифрования, который выбирается одним из двух элементов radioButton. В строке ниже выводится сообщение о том, что нужно ввести в поле параметр сдвига или ключ, под этим сообщением находится строка, в которую данный параметр вводится с клавиатуры. Ниже располагаются две кнопки, каждая из которых отвечает за свой метод в соответствии названию.

Класс шифра Цезаря:

public class CaesarCipher

        {

            //символы русской азбуки

            const string alfabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";

            private string CodeEncode(string text, int k)

            {

                //добавляем в алфавит маленькие буквы

                var fullAlfabet = alfabet + alfabet.ToLower();

                var letterQty = fullAlfabet.Length;

                var retVal = "";

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

                {

                    var c = text[i];

                    var index = fullAlfabet.IndexOf(c);

                    if (index < 0)

                    {

                        //если символ не найден, то добавляем его в неизменном виде

                        retVal += c.ToString();

                    }

                    else

                    {

                        var codeIndex = (letterQty + index + k) % letterQty;

                        retVal += fullAlfabet[codeIndex];

                    }

                }

                return retVal;

            }

            //шифрование текста

            public string Encrypt(string plainMessage, int key)

                => CodeEncode(plainMessage, key);

            //дешифрование текста

            public string Decrypt(string encryptedMessage, int key)

                => CodeEncode(encryptedMessage, -key);

        }

Класс шифра Виженера:

public class VigenereCipher

        {

            const string defaultAlphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";

...

Скачать:   txt (7 Kb)   pdf (480.2 Kb)   docx (365.8 Kb)  
Продолжить читать еще 6 страниц(ы) »
Доступно только на Essays.club