Тег: шифр цезаря на C#

KostyeFromHelen
18. Шифр Цезаря на C#
03.03.2012 14:48:46

Шифр Цезаря - это шифр, когда-то каждая буква в тексте заменяется другой, сдвинутой по алфавиту на некоторый шаг. 

Форма выглядит так:

В ЛистБокс мы будем помещать новый алфавит, для наглядности. В текстовые поля вбивать текст и шаг. Один метод будет шифровать другой расшифровывать.

Собственно код:

 private void button1_Click(object sender, EventArgs e) 
        {
listBox1.Items.Clear();
textBox3.Text = "";
int move = 0;
string[] array = new string[] { "а", "б", "в",
"г", "д", "е", "ё", "ж",
"з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с",
"т", "у", "ф", "х",
"ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я" };
 try
{
 move = Convert.ToInt32(textBox1.Text);
}
catch
{
MessageBox.Show("Установите шаг шифрования!"); 
return;
}

string[] array2;
 array2 = array.Skip(move).Concat(array.Take(move)).ToArray(); 
//Данная функция 
смещает по кругу ячейки массива. Для расшифровки стоит
просто поменять move на 33-move
foreach (string element in array2)
 {
listBox1.Items.Add(element.ToString()); //добвляем
в ЛистБокс новый алфавит } string text = textBox2.Text; foreach (char bykva in text) { for (int i = 0; i < array.Length; i++) { if (bykva.ToString().ToLower() == array[i])
{ textBox3.Text += array2[i]; break; } else { if (bykva.ToString() == " " || bykva.ToString() == "." ||
bykva.ToString() == "," || bykva.ToString() == ":" ||
bykva.ToString() == ";" || bykva.ToString() == "?" ||
bykva.ToString() == "!") // эти знаки печатаются без зашифровки
                        {
                            textBox3.Text += " ";
                            break;
                        }
                    }
                }
            }
        }
Несложное шифрование, если не использовать какие-то дополнительные алгоритмы.

Теги: шифрование на C# | шифр цезаря на C#

Комментариев 4 | Просмотров: 12231 | Подробнее...


 

Программируем на C#, интересные статьи, книги, музыка; Костя Карпов.