Введение

Простой метод шифрования

ROT13 (Rotate13, "поворот на 13 позиций", иногда с дефисом ROT 13) — это простой шифр подстановки, заменяющий каждую букву 13-й буквой, следующей за ней в латинском алфавите. ROT13 является частным случаем шифра Цезаря, разработанного в Древнем Риме. Поскольку в базовом латинском алфавите 26 букв (2×13), ROT13 является самообратным; то есть для расшифровки ROT13 применяется тот же алгоритм, что и для шифрования, позволяя использовать одно и то же действие для кодирования и декодирования. Алгоритм практически не обеспечивает криптографической защиты и часто приводится в качестве каноничного примера слабого шифрования. ROT13 использовался на интернет-форумах для скрытия спойлеров, развязок, решений головоломок и нежелательного контента от случайного просмотра. ROT13 послужил вдохновением для множества словесных игр в сети и часто упоминается в дискуссиях в новостных группах.

Описание

Применение ROT13 к фрагменту текста требует лишь анализа его буквенных символов и замены каждого из них на букву, находящуюся на 13 позиций дальше в алфавите, с возвратом к началу, если это необходимо. A становится N, B становится O и так далее до M, которое становится Z, затем последовательность продолжается с начала алфавита: N становится A, O становится B и так далее до Z, которое становится M. Под воздействием оказываются только буквы английского алфавита; цифры, символы, знаки препинания, пробелы и все остальные символы остаются без изменений. Поскольку в английском алфавите 26 букв и 26 = 2 × 13, функция ROT13 является самообратной: Йоханн Эрнст Элиас Бесслер, часовщик XVIII века и конструктор машин вечного движения, отметил, что ROT13 кодирует его фамилию как Orffyre. Он использовал её латинизированную форму, Orffyreus, в качестве псевдонима. ROT13 использовался в новостной группе net.jokes уже в начале 1980-х годов. Он применяется для сокрытия потенциально оскорбительных шуток или для маскировки ответа на головоломку или спойлер. Ненадежный источник: date=August 2018 Сдвиг в тринадцать позиций был выбран вместо других значений, таких как три, как в оригинальном шифре Цезаря, поскольку тринадцать – это значение, при котором кодирование и декодирование эквивалентны, что обеспечивает удобство использования одной команды для обеих операций. Он также используется для обхода фильтров электронной почты и спам-фильтров. Маскируя содержание электронного письма, алгоритм фильтрации не может идентифицировать его как, например, угрозу безопасности, и позволяет ему попасть во входящие сообщения получателя. В зашифрованном, обычном английском тексте значительного размера ROT13 можно узнать по некоторым паттернам букв и слов. Примерами служат слова "n", "V" (только с заглавной буквы) и "gur" (ROT13 для "a", "I" и "the"), а также слова, оканчивающиеся на "yl" ("ly"). ROT13 не предназначен для использования там, где важна конфиденциальность – использование постоянного сдвига означает, что шифрование фактически не имеет ключа, а для дешифровки не требуется ничего, кроме знания о том, что используется ROT13. Даже без этого знания алгоритм легко взломать с помощью частотного анализа. Соответственно, тройной ROT13 (используется в шутливой аналогии с 3DES) эквивалентен обычному ROT13. В декабре 1999 года было обнаружено, что Netscape Communicator использовал ROT13 в рамках небезопасной схемы для хранения паролей электронной почты. В 2001 году российский программист Дмитрий Скляров продемонстрировал, что поставщик электронных книг, New Paradigm Research Group (NPRG), использовал ROT13 для шифрования своих документов; предполагается, что NPRG, возможно, принял пример ROT13, поставляемый с комплектом разработки программного обеспечения Adobe eBook, за полноценную схему шифрования. Windows XP использует ROT13 в некоторых ключах реестра. ROT13 также используется в программе Unix fortune для сокрытия потенциально оскорбительных высказываний.

Emacs и Vim

В Emacs можно выполнить ROT13 для буфера или выделенного фрагмента с помощью команд M-x включить режим rot13, M-x rot13 в другом окне или M-x rot13 область. В текстовом редакторе Vim можно выполнить ROT13 для буфера с помощью команды ggg?G.