Доработка шифра Цезаря - C#
Формулировка задачи:
помогите разобраться и дописать прогу немного непойму.
1. Как дописать в form1 чтоб было шифрование и дешифрирование текста из стоки texBox1 в texBox2.(Ошибка в коде де шифрования)
2.Как можно дописать чтоб не только английские буквы были и цифры но еще и русские.
Вот код шифрования:
Код де шифрования:
Помогите пожалуйста.
Листинг программы
- {
- n = str1.Length;
- //textBox1.Text = "";
- textBox2.Text = "";
- for (int i = 0; i < n; i++)
- {
- k = (int)str1[i];
- k = k + index;
- if (k > 122) k = k - 26;
- textBox2.Text = textBox2.Text + ((char)(k)).ToString();
- }
- }
Листинг программы
- private void button2_Click(object sender, EventArgs e)
- {
- int k, n, index;
- string str1;
- str1 = textBox1.Text;
- if (textBox3.Text != "")
- {
- index = Convert.ToInt32(textBox3.Text);
- if (index < 26 & index > 0)
- {
- n = str1.Length;
- //textBox2.Text = "";
- textBox2.Text = "";
- for (int i = 0; i < n; i++)
- {
- k = (int)str1[i];
- k = k - index;
- if (k < 97) k = k + 26;
- textBox2.Text = textBox2.Text + ((char)(k)).ToString();
- }
- }
- }
- }
Решение задачи: «Доработка шифра Цезаря»
textual
Листинг программы
- // Функция возвращает A по модулю B
- // например:
- // Mod(3,5) = 3
- // Mod(5,5) = 0
- // Mod(6,5) = 1
- // Mod (-1, 5) = 4 <- Обычная конструкция a%b не работает с отрицательными числами
- //
- // Нужна чтобы циклично сдвигать массив при шифровании
- private int Mod(int a, int b)
- {
- return (Math.Abs(a * b) + a) % b;
- }
- private string ShiftString(string Text, int Size = 1)
- {
- var sb = new StringBuilder(); // StringBuilder это почти обычный string, только быстрее
- foreach (char c in Text) // перебираем все символы в строке Text
- {
- int index = Charset.IndexOf(c); // Находим порядковый номер этого символа в алфавите (нашем)
- sb.Append(index == -1 ? // Если -1 значит символа нет в алфавите
- c : // тогда мы его просто в строку копируем не изменяя
- Charset[Mod(index + Size, Charset.Length)]); // а если нашли, то добавим к номеру смещение Size
- // Возьмем по модулю "Длина_алфавита" ('Я'+1 -> 'A')
- // и поместим в новую строку символ алфавита по этому новому номеру (индексу)
- }
- return sb.ToString(); // ну и вернем обычную строку из "быстрой строки" (StringBuilder)
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д