Создание своего метода шифрования, часть 3

Это 3  и последняя статья из цикла “Создание своего метода шифрования”. В ней я расскажу о том, как превратить алгоритм из 2-ой статьи  в полноценную программу.

Алгоритм

Сейчас вкратце вспомним этапы, по которым будем писать программу.

  1. Ввод ключевых слов в систему
  2. Ввод текста
  3. Определения дальнейшего направления работы программы
  4. Получения результата работы программы (используя минимальное кол-во манипуляций)

Писать программу мы будем с Visual Studio на языке C#. Сначала создадим форму нашей программы.

Разместим на форме следующие элементы:

  1. Textbox – 4 штуки
  2. Button – 3 штуки
  3. Radio Button – 2 штуки

Кнопки подпишем: Добавить ключ, отредактировать текст, выполнить операцию.

Radio Button подпишем: Шифрование, Дешифрование.

Форма программы

Для работы программы нам понадобятся переменные, но не простые. Объявим эти переменные в public partial class Form1 : Form .


        public string shifrtext;
        public char[] stolb = new char[5];
        public char[] strok = new char[6];
        public string strokaa;
        public string stolbezz;
        public string textafter;

Код ввода ключей

Два раза щелкнем по кнопке “Добавить ключ” и напишем там  код помеченный двумя слешами — //.


      strokaa = textBox1.Text; //
      stolbezz = textBox2.Text; //

Код редактирования текста

Теперь приступим к редактированию текста. Нам надо избавиться от пробелов и запятых. А также заменить некоторые буквы аналогами. Создадим новую процедуру под названием reduck.


            shifrtext = textBox3.Text; //
            shifrtext = shifrtext.Replace(",", "").Replace(".", "").Replace("ъ",         "").Replace("ё", "е").Replace("й", "и").Replace("ь", "").Replace(" ", ""); //
            textBox5.Text = shifrtext; //

Код шифрования

Так же как и в прошлый раз создадим новую процедуру. Назовем ее shifrov. Это будет код шифрования наших данных.


    int st, str;
            string[,] keymas = new string[6, 5] {{"а", "б", "в", "г", "д"},
                                                 {"е", "ж", "з", "и", "к"},
                                                 {"л", "м", "н", "о", "п"},
                                                 {"р", "с", "т", "у", "ф"},
                                                 {"х", "ц", "ч", "ш", "щ"},
                                                 {"ы", "ю", "я", "-", "-"} };
            string textshifr = "";
            for (int h = 0; h < shifrtext.Length; h++)
            {
                for (int i = 0; i < 6; i++)
                {
                    for (int j = 0; j < 5; j++)
                    {
                        if (shifrtext[h].ToString() == keymas[i, j])
                        {
                           textshifr += strokaa[j].ToString() + stolbezz[i].ToString();
                        }

                    }
                }
            }
            textBox4.Text = textshifr.ToString();

Код дешифрования

Процедуру расшифровки так же создадим отдельно, и назовем ее rasshif.


      string textshifr = "";
            int zstr = 0, zstl = 0;
            int x = 0, y = 1;
            string[,] keymas = new string[6, 5] {{"а", "б", "в", "г", "д"},
                                                 {"е", "ж", "з", "и", "к"},
                                                 {"л", "м", "н", "о", "п"},
                                                 {"р", "с", "т", "у", "ф"},
                                                 {"х", "ц", "ч", "ш", "щ"},
                                                 {"ы", "ю", "я", "-", "-"} };

            for (int h = 0; h < shifrtext.Length; h++)
            {
                if (x <= shifrtext.Length )
                {
                    if (y <= shifrtext.Length)
                    {
                        for (int i = 0; i < 6; i++)
                        {
                            if (shifrtext[y] == stolbezz[i])
                            {
                                zstr = i;
                                y += 2;
                                break;
                            }
                        }
                        /////////////
                        for (int j = 0; j < 5; j++)
                        {
                            if (shifrtext[x] == strokaa[j])
                            {
                                zstl = j;
                                x += 2;
                                break;
                            }
                        }
                        textshifr += keymas[zstr, zstl].ToString();
                    }
                }
            }
         textBox4.Text = textshifr.ToString();

Код кнопки “Выполнить операцию”


     if (radioButton1.Checked)
            {
                redack();
                shifrov();
            }
            if (radioButton2.Checked)
            {
                redack();
                rasshifr();
            }

Цикл статей “Создание своего метода шифрования” подошел к концу. Здесь вы можете изучить первую и вторую часть.

Добавить комментарий