Описание:
Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования.
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее.
Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.
Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и всё ещё имеет современное приложение в системе ROT13. Как и все моноалфавитные шифры, шифр Цезаря легко взламывается и не имеет почти никакого применения на практике.
Фрагмент программного кода
/* кодирование строки "кодом Цезаря" */ /* символы кодируемой строки заменяются на символы из алфавита с позицией, вычисляемой из правила */ /* temp = ( j * n + k ) % s.Length, где j - позиция в алфавите текущего символа, s.Length - длина алфавита */ /* база шифра - параметры, задающие "сдвиг" символов в алфавите при кодировании n = 1, k = 20 */ richTextBox2.Clear(); /* закодированный текст будет сохранен в поток a (файл encode.txt) */ StreamWriter a = new StreamWriter("encode.txt"); /* s - кодируемая строка */ string s = richTextBox1.Text; /* m - длина алфавита */ m = alf.Length; /* для каждого символа кодируемой строки */ for (int i = 0; i < s.Length; i++) /* поиск соответствующего символа в алфавите */ for (int j = 0; j < alf.Length; j++) { /* если символ найден */ if (s[i] == alf[j]) { /* осуществляем сдвиг позиции символа в алфавите */ temp = j * n + k; /* берем остаток от деления сдвига на длину алфавита */ /* ( чтобы индекс temp не выходил за пределы алфавита ) */ while (temp >= m) temp -= m; /* в закодированной строке - символ заменяется на "сдвинутый" */ a.Write(alf[temp]); richTextBox2.Text += alf[temp]; } } a.Close();
Скриншот архива с проектом
prostovova1264