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 символов.
Поэтому для символов англ.алфавита:
- Для первых 13 символов [А - M] мы добавим к их кодам +13.
- Для следующих 13 символов [N - Z] мы добавим к их кодов -13.
- Остальные символы оставим без изменений.
Кстати, алгоритм ROT13 является обратимым алгоритмом, то есть отменить ROT13 можно, применив тот же алгоритм; одни и те же действия могут быть использованы для кодирования и декодирования.
Реализация: воспользуемся свойством обратимости алгоритма ROT13 для декодирования и сверки с исходной строкой.
https://gist.github.com/unilecs/53fb3459c96c3e09b4f0ae2f52cb7874
Play-test: https://dotnetfiddle.net/yauLk6