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

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

Суть алгоритма, заключается в том, что для шифрования строки текста нужно сместить буквы на n-позиций. Например, это значит:

abc -> cdf при смещении на 3 символа — ну и так далее. Шифр не имеет практического смысла, так как легко подбирается перебором (26 вариантов для английского языка, что крайне мало)

Реализация функции шифрования на си, а так же ее использование:


void CesareEncrypt(char input[], int key)
{
for (int i = 0; i< strlen(input); i++)
{
input[i] += (key + 26)%26;
}
puts(input);
}

Функция принимает строку и длину смещения.

Далее просто смещаем на длину ключа и выводим строку на консоль.

Использование:


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;
}

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

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

2 Responses

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