Наверное, самый известный из «школьных» шифров. Практической ценности не имеет совершенно, кроме того,чтобы показать, что такое криптография в самом простом её проявлении.
Суть алгоритма, заключается в том, что для шифрования строки текста нужно сместить буквы на n-позиций. Например, это значит:
abc -> cdf при смещении на 3 символа — ну и так далее. Шифр не имеет практического смысла, так как легко подбирается перебором (26 вариантов для английского языка, что крайне мало)
Реализация функции шифрования на си, а так же ее использование:
[cpp]
void CesareEncrypt(char input[], int key)
{
for (int i = 0; i< strlen(input); i++)
{
input[i] += (key + 26)%26;
}
puts(input);
}
[/cpp]
Функция принимает строку и длину смещения.
Далее просто смещаем на длину ключа и выводим строку на консоль.
Использование:
[cpp]
int _tmain(int argc, _TCHAR* argv[])
{
printf(«Enter String for Encryption here:»);
char S [255];
int key;
gets(S);
strlwr(S);
printf(«Enter key (one decimial number): «);
scanf(«%d», &key);
printf(«\n»);
CesareEncrypt(S,key);
return 0;
}
[/cpp]
Функция очевидна. Вывод пользователю сообщения и чтение данных в строку. Далее строка переводится в нижний регистр и посылается запрос на ключ. Далее вызываем функцию, которая внутри себя печатает результат.
Если не верно — так же прошу прокомментировать программу.
Спасибо, очень пригодилась программка.
Вот на данном сайте интересно реализован шифр Цезаря
http://orenstudent.ru/CodCezara.htm