UniLecs #173. Алгоритм ROT13

UniLecs #173. Алгоритм ROT13

UniLecs
Мало кто знает, но алгоритм ROT13 был весьма популярным алгоритмом шифрования сообщений в 90-х прошлого столетия. А на сегодняшний день ROT13 стал именем нарицательным и обозначает слабую схему шифрования.

Задача: реализовать алгоритм шифрования ROT13

Входные данные: str - строка размера от 1 до 1000, состоящая из любых символов A-Za-z, чисел 0-9 или спец.символов.

Вывод: зашифрованное алгоритмом ROT13 сообщение.

Пример: str = "Hello World"

Answer: "Uryyb Jbeyq

Идея:

Алгоритм ROT13 - это частный случай алгоритма шифра Цезаря. Единственное, что стоит учесть, что ROT13 "шифрует" только буквы сдвигом на 13 символов.

Поэтому для символов англ.алфавита:

  1. Для первых 13 символов [А - M] мы добавим к их кодам +13.
  2. Для следующих 13 символов [N - Z] мы добавим к их кодов -13.
  3. Остальные символы оставим без изменений.
Кстати, алгоритм ROT13 является обратимым алгоритмом, то есть отменить ROT13 можно, применив тот же алгоритм; одни и те же действия могут быть использованы для кодирования и декодирования.

Реализация: воспользуемся свойством обратимости алгоритма ROT13 для декодирования и сверки с исходной строкой.

C#

https://gist.github.com/unilecs/53fb3459c96c3e09b4f0ae2f52cb7874

Play-test: https://dotnetfiddle.net/yauLk6

Report Page