Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860

Шифровка и дешифровка текста с использованием ключа шифрования

12.07.2020, 18:34. Показов 2606. Ответов 2

Студворк — интернет-сервис помощи студентам
Шифровка
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
[SPOILER]private void button3_Click(object sender, EventArgs e) //Шифрование с ключом
        {
            richTextBox2.Clear();
            string s = richTextBox1.Text, res = "", stroka = ""; //Забираем весь текст из элемента
            long leng, position = 0, sam_kluch = Convert.ToInt32(textBox2.Text);
            leng = s.Length;//Получаем его длину
            int razr = Convert.ToInt32(numericUpDown1.Text); //Количество разрядов на блок
            int[] kluch = new int[razr]; //Разбиваем ключ на разряды для замены
            if (leng % razr != 0) //Если мы не можем разбиться на равные блоки
            {
                for (int i = 0; i < razr - (leng % razr); i++)
                    s += "$"; //Добавляем мнимые символы для кодирования
            }
            leng = s.Length;//Получаем новую длину строки
            byte p = 1;
            while (sam_kluch > 0)
            {
                kluch[kluch.Length] = Convert.ToInt32(sam_kluch) % 10; //Заполняем ключ с конца
                sam_kluch = sam_kluch / 10; //Убавляем количество разрядов
                p++; //Смещаемся по массиву назад (с конца)
            }
            while (leng > 0) //Пока не обработан весь текст
            {
                stroka = s.Substring(Convert.ToInt32(position), razr);//Забираем наш блок
                for (int i = 0; i < razr; i++) //Обрабатываем блок
                {
                    res += stroka[kluch[i]]; //Добавляем в результирующую строку символ, исходя из ключа
                } //Получается, ищется нужный символ в подстроке и дописывается в результирующую строку
                  //Так мы фиксируем нужные символы в необходимом порядке
                leng -= razr; //Уменьшаем длину строки, которую нужно обработать
                position += razr; //Смещаемся к следующему блоку
            }
            richTextBox2.Text += res;
        }[/SPOILER]
Дешифровка
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
[SPOILER] private void button6_Click(object sender, EventArgs e) //Дешифрование с ключом
        {
            string s = richTextBox2.Text, res = "", stroka = ""; //Забираем весь текст из элемента
            long leng, position = 0, sam_kluch = Convert.ToInt32(textBox2.Text);
            leng = s.Length;//Получаем его длину
            int razr = Convert.ToInt32(numericUpDown1.Text); //Количество разрядов на блок
            int[] kluch = new int[razr]; //Разбиваем ключ на разряды для замены
            richTextBox2.Clear();
            byte p = 1;
            string pr = Convert.ToString(sam_kluch); //Новая строка для расшифровки
            char[] chstr = pr.ToCharArray();
            while (sam_kluch > 0)
            {
                kluch[kluch.Length - p] = Convert.ToInt32(sam_kluch) % 10 - 1; //Заполняем ключ с конца
                sam_kluch = sam_kluch / 10; //Убавляем количество разрядов
                p++; //Смещаемся по массиву назад (с конца)
            }
            while (leng > 0) //Пока не обработан весь текст
            {
                stroka = s.Substring(Convert.ToInt32(position), razr);//Забираем наш блок
                for (int i = 0; i < razr; i++) //Обрабатываем блок
                {
                    chstr[kluch[i]] = stroka[i];
                }
                pr = new string(chstr);
                if (leng - razr == 0) //Если это последний блок с доп. символами
                { pr = pr.Replace("$", ""); } //Избавляемся от них
                res += pr;
                leng -= razr; //Уменьшаем длину строки, которую нужно обработать
                position += razr; //Смещаемся к следующему блоку
            }
            res = res.Replace("$", " ");
            richTextBox2.Text += res;
        }[/SPOILER]
Подскажите в чем причина появления ошибки (см.скрин) - при шифровании текста???
Миниатюры
Шифровка и дешифровка текста с использованием ключа шифрования   Шифровка и дешифровка текста с использованием ключа шифрования  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2020, 18:34
Ответы с готовыми решениями:

Шифровка и дешифровка текста
Напишите подпрограммы Encode (зашифровать) и Decode (расшифровать), которые получают два параметра str и alpha типа string. В первом...

Шифровка и дешифровка текста
Помогите, пожалуйста, кто может. Буду очень благодарен. Написать программу шифровки и дешифровки текста по сделующему алгоритму:...

Шифровка и дешифровка текста с помощью шифровального квадрата
Вот такая задача - Шифровка и дешифровка текста, расположенного в файле с помощью шифровального квадрата размером 8*8. Самое интересное в...

2
2 / 1 / 1
Регистрация: 12.07.2020
Сообщений: 1
12.07.2020, 19:00
Лучший ответ Сообщение было отмечено xamelione25 как решение

Решение

Потому что в C# как и во многих других языках первый элемент массива имеет индекс 0
И соответственно kluch[kluch.Length] всегда будет возвращать ошибку времени выполнения.
А вот kluch[kluch.Length-1] уже не будет падать с ошибкой.
1
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
12.07.2020, 20:26  [ТС]
QuickWinRu,
А касаемо дешифровки, в чем здесь ошибка?
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
        private void button6_Click(object sender, EventArgs e) //Дешифрование с ключом
        {
            string s = richTextBox2.Text, res = "", stroka = ""; //Забираем весь текст из элемента
            long leng, position = 0, sam_kluch = Convert.ToInt32(textBox2.Text);
            leng = s.Length;//Получаем его длину
            int razr = Convert.ToInt32(numericUpDown1.Text); //Количество разрядов на блок
            int[] kluch = new int[razr]; //Разбиваем ключ на разряды для замены
            richTextBox2.Clear();
            byte p = 1;
            string pr = Convert.ToString(sam_kluch); //Новая строка для расшифровки
            char[] chstr = pr.ToCharArray();
            while (sam_kluch > 0)
            {
                kluch[kluch.Length - p] = Convert.ToInt32(sam_kluch) % 10 -1; //Заполняем ключ с конца
                sam_kluch = sam_kluch / 10; //Убавляем количество разрядов
                p++; //Смещаемся по массиву назад (с конца)
            }
            while (leng > 0) //Пока не обработан весь текст
            {
                stroka = s.Substring(Convert.ToInt32(position), razr);//Забираем наш блок
                for (int i = 0; i < razr; i++) //Обрабатываем блок
                {
                    chstr[kluch[i]] = stroka[i];
                }
                pr = new string(chstr);
                if (leng - razr == 0) //Если это последний блок с доп. символами
                { pr = pr.Replace("$", ""); } //Избавляемся от них
                res += pr;
                leng -= razr; //Уменьшаем длину строки, которую нужно обработать
                position += razr; //Смещаемся к следующему блоку
            }
            res = res.Replace("$", " ");
            richTextBox2.Text += res;
        }
Миниатюры
Шифровка и дешифровка текста с использованием ключа шифрования   Шифровка и дешифровка текста с использованием ключа шифрования  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2020, 20:26
Помогаю со студенческими работами здесь

Шифровка\Дешифровка текста. Курсак горит(( SOS
Курсовая работа. 1-й курс. Паскаль. Задание: Нужно сделать 2 проги в одной для кодирования\раскодирования текста. Считывать и...

Шифровка и дешифровка текста с помощью заданного шифровального квадрата 8*8 (Turbo -> PABC.NET)
Uses Crt; Type matrix = array of string; Const mask: matrix = ('.x.x..x.', '....x...', ...

Шифровка-дешифровка
Помогите пожалуйста !Необходимо создать программу,которая будет зашифровывать,и дешифровывать слово ,поставив каждой букве её номер в...

шифровка/дешифровка
Помогите пожалуйста. Надо написать прогу, которая шифрует/дешифрует введеный текст. (конкретно мне не понятно, как введеную фразу разбить...

Шифровка/дешифровка
Написать программу шифровки/дешифровки методом биграмм! НА сайте не нашёл &gt;&gt; создал тему!


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru