Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 1 / 1
Регистрация: 16.09.2021
Сообщений: 109

Создать форму с методом шифрования Трисемуса

20.06.2023, 13:01. Показов 1402. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, надо сделать форму в которой будет запрос у пользователя:
1. Количество колонок в таблице
2. Ключевое слово
3. Сообщение которое требуется зашифровать

и вывод зашифрованного сообщения

ниже алгоритм которые выполняет все тоже самое только в консоле:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            char[] alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ ,.".ToCharArray();
 
            // Пытаемся вычислить размерность таблицы
            Console.WriteLine("Символов в алфавите: " + alphabet.Length);
            int rows = 0, columns;
            bool isValidTable;
            do
            {
                Console.Write("Количество колонок в таблице: ");
                isValidTable = int.TryParse(Console.ReadLine(), out columns) && columns > 1;
                if (!isValidTable)
                {
                    Console.WriteLine("Необходимо ввести число больше 1");
                }
                else
                {
                    rows = alphabet.Length / columns;
                    isValidTable &= rows > 1 && rows * columns == alphabet.Length;
                    if (!isValidTable)
                    {
                        Console.WriteLine("Необходимо ввести число колонок таким образом, чтобы число строк таблицы было больше 1 и таблица могла вмещать в себе все символы алфавита");
                    }
                }
            }
            while (!isValidTable);
 
            // Пытаемся получить ключевое слово
            char[] keyWord;
            bool isValidKeyWord;
            do
            {
                Console.Write("Введите ключевое слово: ");
                keyWord = Console.ReadLine().ToUpper().Distinct().ToArray();
                isValidKeyWord = keyWord.Length > 0 && keyWord.Length <= alphabet.Length;
                if (!isValidKeyWord)
                {
                    Console.WriteLine("Ключевое слово не может быть пустой строкой или содержать число уникальных символов больше размера алфавита");
                }
                else
                {
                    isValidKeyWord &= !keyWord.Except(alphabet).Any();
                    if (!isValidKeyWord)
                    {
                        Console.WriteLine("Ключевое слово не может содержать символы, которых нет в алфавите");
                    }
                }
            }
            while (!isValidKeyWord);
 
            // Создаем таблицу
            var table = new char[rows, columns];
 
            // Вписываем в нее ключевое слово
            for (var i = 0; i < keyWord.Length; i++)
            {
                table[i / columns, i % columns] = keyWord[i];
            }
 
            // Исключаем уникальные символы ключевого слова из алфавита
            alphabet = alphabet.Except(keyWord).ToArray();
 
            // Вписываем алфавит
            for (var i = 0; i < alphabet.Length; i++)
            {
                int position = i + keyWord.Length;
                table[position / columns, position % columns] = alphabet[i];
            }
 
            // Получаем сообщение, которое необходимо зашифровать
            string message;
            bool isValidMessage;
            do
            {
                Console.Write("Введите сообщение: ");
                message = Console.ReadLine().ToUpper();
                isValidMessage = !string.IsNullOrEmpty(message);
                if (!isValidMessage)
                {
                    Console.WriteLine("Сообщение не может быть пустой строкой");
                }
            }
            while (!isValidMessage);
 
            // Создаем место для будущего зашифрованного сообщения
            var result = new char[message.Length];
 
            // Шифруем сообщение
            for (var k = 0; k < message.Length; k++)
            {
                char symbol = message[k];
                // Пытаемся найти символ в таблице
                for (var i = 0; i < rows; i++)
                {
                    for (var j = 0; j < columns; j++)
                    {
                        if (symbol == table[i, j])
                        {
                            symbol = table[(i + 1) % rows, j]; // Смещаемся циклически на следующую строку таблицы и запоминаем новый символ
                            i = rows; // Завершаем цикл по строкам
                            break; // Завершаем цикл по колонкам
                        }
                    }
                }
                // Записываем найденный символ
                result[k] = symbol;
            }
 
            // Выводим зашифрованное сообщение
            Console.WriteLine("Зашифрованное сообщение: " + new string(result));
        }
    }
}
не нужен какой-то красивый дизайн, можно просто в дефолтных настройках все это вывести, главное что бы работало
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2023, 13:01
Ответы с готовыми решениями:

Реализовать программу шифрования/дешифрования по алгоритму Трисемуса
Пожалуйста помогите написать программу срочно!!! Заранее спасибо!!!

Создать приложение для шифрования/дешифрования файла ASCII методом
Необходимо создать приложение для шифрования/дешифрования файла ASCII методом в Delphi. Так же должен присутствовать исходный код...

Создать приложение для шифрования/дешифрования текста ASCII методом
Необходимо создать приложение для шифрования/дешифрования текста ASCII методом. Так же должен присутствовать исходный код программы. ...

23
3271 / 3366 / 559
Регистрация: 17.02.2019
Сообщений: 5,282
01.07.2023, 00:15
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от wizard41 Посмотреть сообщение
а найти где отключить фыркание студии на это.
ну не знаю
Инструменты > Параметры > Текстовый редактор > C# > Стиль кода > Именование.
Нажать в внизу плюсик, появиться новая строка из 3 блоков(ComboBox).
В 1-ом выбрать Private Method, в 2-ом выбрать Begins with l, в 3-ем первую строчку.
Поднять её в верх всех строк стрелками, нажать ОК и перезагрузить студию
скрин
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
01.07.2023, 01:22
Цитата Сообщение от January29 Посмотреть сообщение
Инструменты > Параметры >
И это помогло? Студия перестала орать на приватные методы со строчной буквы?

Добавлено через 6 минут
Цитата Сообщение от January29 Посмотреть сообщение
выбрать Begins with l
И это похоже правило для интерфейсов "начинать с I". Для разрешения строчных букв должно быть что-то другое..
0
3271 / 3366 / 559
Регистрация: 17.02.2019
Сообщений: 5,282
01.07.2023, 13:31
Цитата Сообщение от wizard41 Посмотреть сообщение
И это помогло? Студия перестала орать на приватные методы со строчной буквы?
у меня получилось
вот до

вот после

Специально выключил ту настройку что в этой теме.
Если не понравится то можно её и удалить справа Название: 3.png
Просмотров: 31

Размер: 371 байт клац и всё.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
01.07.2023, 13:41
Цитата Сообщение от January29 Посмотреть сообщение
у меня получилось
Вчера не стал пробовать. Ну да, похоже это то, что надо.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.07.2023, 13:41

Создать программу для шифрования текста методом перестановки в Excel
Помогите пожалуйста, нужно создать в excel vba программу для шифрования текста методом перестановки. Должно появиться окно, где можно будет...

Шифрование методом Трисемуса
Добрый день, господа программисты. Нужно написать код для шифрования методом Трисемуса, чтобы вставить его в wpf. Чтение сообщения...

Дешифрование методом Трисемуса
Помогите написать дешифрование методом Трисемуса, внизу код есть с шифрованием: char alphabet = &quot;АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ...

Шифрование методом Трисемуса
Доброго времени суток. Не могу написать часть кода для шифрования методом Трисемуса на WPF. Есть Text Box (TB_Massage), откуда...

Шифрование методом Трисемуса
Здравствуйте. Напишу здесь алгоритм шифрования, чтобы было понятней: Выбирается размерность таблицы. В таблицу вписывается ключевое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru