Результаты работы программы
Зарегистрируйся в два клика и получи неограниченный доступ к материалам,а также промокод на новый заказ в Автор24. Это бесплатно.
При запуске программы в главном окне отображаются поля (Рисунок 1): для ввода ключевого слова, для ввода сообщения и для ввода зашифрованного сообщения. Кнопки: зашифровать и расшифровать. Таблица Трисемуса.
Рисунок 1. Главное окно.
При вводе ключевого слова таблица сразу же обновляется (Рисунок 2).
Рисунок 2. Ввод ключевого слова.
Если ввести сообщение в соответствующее поле и нажать на кнопку «Зашифровать», в поле для ввода зашифрованного сообщения появится шифр введенного сообщения (Рисунок 3).
Рисунок 3. Шифровка сообщения.
Если ввести зашифрованное сообщение в соответствующее поле и нажать на кнопку «Расшифровать», в поле для ввода сообщения появится расшифрованный текст сообщения (Рисунок 4).
Рисунок 4. Расшифровка сообщения.
Исходный код программы
Ниже представлен исходный код программы с комментариями.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Trisemus_Encryption
{
public partial class Crypt : Form
{
// исходный алфавит
private string alphabet = "абвгдежзийклмнопрстуфхцчшщъыьэюя .,";
// временный алфавит
private string tmp_alphabet;
// ключевое слово
private string keyword = "";
public Crypt()
{
InitializeComponent();
tmp_alphabet = alphabet;
// заполнение таблицы алфавитом
alphabetGridFill(keyword);
}
// функция шифровки
private string encrypt(string msg)
{
int size = msg.Length;
// заменяем все буквы на строчные
msg = msg.ToLower();
string result = "";
// проходим по сообщению
for (int k = 0; k size; k++)
for (int i = 0; i 5; i++)
for (int j = 0; j 7; j++)
// если символ из сообщения совпадает с символом из таблицы
if (alphabetGrid.Rows[i].Cells[j].Value.ToString()[0] == msg[k])
{
// к результату добавляем символ ниже в том же столбце
if (i == 4)
result += alphabetGrid.Rows[0].Cells[j].Value.ToString();
else
result += alphabetGrid.Rows[i + 1].Cells[j].Value.ToString();
}
// возвращаем результат
return result;
}
// функция расшифровки
private string decrypt(string msg)
{
int size = msg.Length;
// заменяем все буквы на строчные
msg = msg.ToLower();
string result = "";
// проходим по сообщению
for (int k = 0; k size; k++)
for (int i = 0; i 5; i++)
for (int j = 0; j 7; j++)
// если символ из сообщения совпадает с символом из таблицы
if (alphabetGrid.Rows[i].Cells[j].Value.ToString()[0] == msg[k])
{
// к результату добавляем символ выше в том же столбце
if (i == 0)
result += alphabetGrid.Rows[4].Cells[j].Value.ToString();
else
result += alphabetGrid.Rows[i - 1].Cells[j].Value.ToString();
}
// возвращаем результат
return result;
}
// при нажатии на кнопку "Зашифровать"
private void encryptBtn_Click(object sender, EventArgs e)
{
// в поле шифра выводим результат функции шифровки
chiperBox.Text = encrypt(msgBox.Text);
}
// при нажатии на кнопку "Расшифровать"
private void decryptBtn_Click(object sender, EventArgs e)
{
// в поле шифра выводим результат функции расшифровки
msgBox.Text = decrypt(chiperBox.Text);
}
// функция удаления из строки одинаковых символов
private string getNewKeyword(string keyword)
{
string new_keyword = "";
// заменяем все буквы на строчные
keyword = keyword.ToLower();
// проходим по слову
for (int i = 0; i keyword.Length; i++)
{
// ищем индекс буквы в алфавите
int index = tmp_alphabet.IndexOf(keyword[i]);
if (index -1)
{
// если буква уникальная, добавляем
// её к результату
new_keyword += tmp_alphabet[index];
// удаляем из алфавита
tmp_alphabet = tmp_alphabet.Remove(index, 1);
}
}
// возвращаем получившееся слово
return new_keyword;
}
// функция заполнения таблицы
private void alphabetGridFill(string keyword)
{
// устанавливаем параметры таблицы
alphabetGrid.ColumnHeadersVisible = false;
alphabetGrid.RowHeadersVisible = false;
alphabetGrid.RowCount = 5;
alphabetGrid.ColumnCount = 7;
// счётчик символов
int counter = 0;
for (int i = 0; i 5; i++)
{
for (int j = 0; j 7; j++)
{
// заполняем пустышками
alphabetGrid.Rows[i].Cells[j].Value = "0";
// меняем размер ячеек
alphabetGrid.Rows[i].Height = 35;
alphabetGrid.Columns[j].Width = 35;
// пока в кл
Зарегистрируйся, чтобы продолжить изучение работы
50% курсовой работы недоступно для прочтения
Закажи написание курсовой работы по выбранной теме всего за пару кликов. Персональная работа в кратчайшее время!