Это 3 и последняя статья из цикла “Создание своего метода шифрования”. В ней я расскажу о том, как превратить алгоритм из 2-ой статьи в полноценную программу.
Алгоритм
Сейчас вкратце вспомним этапы, по которым будем писать программу.
- Ввод ключевых слов в систему
- Ввод текста
- Определения дальнейшего направления работы программы
- Получения результата работы программы (используя минимальное кол-во манипуляций)
Писать программу мы будем с Visual Studio на языке C#. Сначала создадим форму нашей программы.
Разместим на форме следующие элементы:
- Textbox – 4 штуки
- Button – 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();
}
Цикл статей “Создание своего метода шифрования” подошел к концу. Здесь вы можете изучить первую и вторую часть.