Задание на программу
Кодирование информации Разработать приложение для кодирования информации (шифр Цезаря, Виженера).
Описание:
1.Шифр Цезаря — один из древнейших шифров. При шифровании каждый символ заменяется другим, отстоящим от него в алфавите на фиксированное число позиций. Шифр Цезаря можно классифицировать как шифр подстановки, при более узкой классификации — шифр простой замены. Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки. Естественным развитием шифра Цезаря стал шифр Виженера. С точки зрения современного криптоанализа, шифр Цезаря не имеет приемлемой стойкости.
2.Шифр Виженера - это метод шифрования буквенного текста с использованием ключевого слова.
Этот метод является простой формой многоалфавитной замены. Шифр Виженера изобретался многократно. Впервые этот метод описал Джованни-Баттиста Беллазо (Giovan Battista Bellaso) в книге La cifra del. Sig. Giovan Battista Bellasо в 1553 году , однако в 19 веке получил имя Блеза Виженера , швейцарского дипломата. Метод прост для понимания и реализации, он является недоступным для простых методов криптоанализа.
Квадрат Виженера или таблица Виженера, может быть использована для заширования и расшифрования.
В шифре Цезаря каждая буква алфавита сдвигается на несколько позиций; например в шифре Цезаря при сдвиге +3, A стало бы D, B стало бы E и так далее.
Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифрования может использоваться таблица алфавитов, называемая квадрат Виженера. Применительно к латинскому алфавиту таблица Виженера составляется из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций. Таким образом, в таблице получается 26 различных шифров Цезаря.
На разных этапах кодировки шифр Виженера использует различные алфавиты из этой таблицы. На каждом этапе шифрования используются различные алфавиты, выбираемые в зависимости от символа ключевого слова.
Например, предположим, что исходный текст имеет вид:
ATTACKATDAWN
Человек, посылающий сообщение, записывает ключевое слово("LEMON") циклически до тех пор, пока его длина не будет соответствовать длине исходного текста:
LEMONLEMONLE
Первый символ исходного текста A зашифрован последовательностью L, которая является первым символом ключа. Первый символ L шифрованного текста находится на пересечении строки L и столбца A в таблице Виженера. Точно так же для второго символа исходного текста используется второй символ ключа; т.е. второй символ шифрованного текста X получается на пересечении строки E и столбца T. Остальная часть исходного текста шифруется подобным способом.
Пример:
Исходный текст: ATTACKATDAWN
Ключ: LEMONLEMONLE
Зашифрованный текст: LXFOPVEFRNHRL
Содержание отчета к курсовой работе
Фрагмент программного кода
private void button1_Click(object sender, EventArgs e)//событие нажатия кнопки ВЫПОЛНИТЬ { textBox3.Clear(); if (radioButton4.Checked)//если метод виженера { if (radioButton1.Checked)//действие - зашифровать { textBox3.Text = "";//записываем результат //ШИФРОВАНИЕ Виженер string input = "", key = "", key_temp = ""; int mod = 0, number_of_letter;//счетчик количества текста input = textBox2.Text;//возвращаем копию этой строки key_temp = textBox1.Text;//возвращаем копию ключа шифрования if (textBox2.Text != "" && textBox1.Text != "") //если все исходные данные введены { mod = input.Length % key_temp.Length; //алгоритм шифрования: переменной mod присваиваем значение введенного текста for (int i = 0; i < (input.Length - mod) / key_temp.Length; i++)//просматриваем в цикле { key += key_temp; } for (int i = 0; i < mod; i++) { key += key_temp[i]; } //определение значений string[] input_mas = new string[input.Length]; int[] input_index = new int[input.Length]; string[] key_mas = new string[input.Length]; int[] key_index = new int[input.Length]; string[] encrypted_word = new string[input.Length]; for (int i = 0; i < input.Length; i++) { input_mas[i] = Convert.ToString(input[i]); //конвертирование в строковое значение }
Содержание архива
- исходный код на C# для Visual Studio
- Пояснительная записка (16 страниц)
klausms