С++: Шифр Цезаря

Наверное, самый известный из «школьных» шифров. Практической ценности не имеет совершенно, кроме того,чтобы показать, что такое криптография в самом простом её проявлении.

Суть алгоритма, заключается в том, что для шифрования строки текста нужно сместить буквы на 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]

Функция очевидна. Вывод пользователю сообщения и чтение данных в строку. Далее строка переводится в нижний регистр и посылается запрос на ключ. Далее вызываем функцию, которая внутри себя печатает результат.

Если не верно — так же прошу прокомментировать программу.

2 Responses

Добавить комментарий