РОТ13
ROT13 ( Rotate13 , « повернуть на 13 мест », иногда пишется через дефис ROT-13 ) — простой шифр замены букв , который заменяет букву 13-й буквой после нее в латинском алфавите . ROT13 — это особый случай шифра Цезаря , разработанного в Древнем Риме.
26 букв (2×13) Поскольку в базовом латинском алфавите , ROT13 является его собственной инверсией ; то есть для отмены ROT13 применяется тот же алгоритм , поэтому для кодирования и декодирования можно использовать одно и то же действие. Алгоритм практически не обеспечивает никакой криптографической безопасности и часто упоминается как канонический пример слабого шифрования . [1]
ROT13 использовался на онлайн-форумах как средство сокрытия спойлеров , изюминок , решений головоломок и оскорбительных материалов от случайного взгляда. ROT13 вдохновил на создание множества онлайн-игр с буквами и словами и часто упоминается в обсуждениях в группах новостей .
Описание
[ редактировать ]Применение ROT13 к фрагменту текста просто требует изучения его буквенных символов и замены каждого из них на букву 13 дальше в алфавите , при необходимости возвращаясь к началу. [2] A становится N, B становится Oи так далее до M, который становится Z, то последовательность продолжается в начале алфавита: N становится A, O становится Bи так далее Z, который становится M. только те буквы, которые встречаются в английском алфавите Затрагиваются ; цифры, символы, знаки препинания, пробелы и все остальные символы остаются без изменений. Поскольку в английском алфавите 26 букв и 26 = 2 × 13, функция ROT13 является своей обратной : [2]
- для любого базового текста на латинице x .
Другими словами, два последовательных применения ROT13 восстанавливают исходный текст (в математике это иногда называют инволюцией ; в криптографии — обратным шифром ).
Преобразование можно выполнить с помощью таблицы поиска , например следующей:
Вход | ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz |
Выход | NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm |
Например, в следующей шутке изюминка скрыта ROT13:
- Почему курица перешла дорогу?
- Gb trg gb гур bgure fvqr!
Преобразуя весь текст через форму ROT13, раскрывается ответ на шутку:
- Июль qvq gur puvpxra pebff gur ebnq?
- Чтобы попасть на другую сторону!
Второе применение ROT13 восстановит оригинал.
Использование
[ редактировать ]ROT13 — это особый случай алгоритма шифрования , известного как шифр Цезаря , который использовал Юлий Цезарь в I веке до нашей эры. [3]
Иоганн Эрнст Элиас Бесслер , часовщик XVIII века и конструктор вечных двигателей , отметил, что ROT13 кодирует его фамилию как Орфир . он использовал латинизированную форму Орфиреус . В качестве псевдонима [4]
ROT13 использовался в группе новостей net.jokes в начале 1980-х годов. [а] Он используется, чтобы скрыть потенциально оскорбительные шутки или скрыть ответ на загадку или другой спойлер . [2] [7] [ ненадежный источник? ] Сдвиг тринадцать был выбран вместо других значений, таких как три, как в исходном шифре Цезаря , поскольку тринадцать — это значение, для которого кодирование и декодирование эквивалентны, что обеспечивает удобство использования одной команды для обоих. [7] ROT13 обычно поддерживается как встроенная функция программного обеспечения для чтения новостей. [7] Адреса электронной почты также иногда кодируются с помощью ROT13, чтобы скрыть их от менее сложных спам-ботов . [8] [ сомнительно – обсудить ] Он также используется для обхода проверки электронной почты и фильтрации спама. Скрывая содержимое электронного письма, алгоритм проверки не может идентифицировать электронное письмо, например, как угрозу безопасности, и пропускает его в почтовый ящик получателя.
В зашифрованном обычном англоязычном тексте любого значительного размера ROT13 можно распознать по некоторым шаблонам букв/слов. Примерами могут служить слова «n», «V» (только с заглавной буквы), «gur» (ROT13 для «a», «I» и «the»), а также слова, оканчивающиеся на «yl» («ly»).
ROT13 не предназначен для использования там, где секретность имеет какое-либо значение — использование постоянного сдвига означает, что шифрование фактически не имеет ключа , а для дешифрования не требуется больше знаний, чем тот факт, что используется ROT13. Даже без этих знаний алгоритм легко взломать с помощью частотного анализа . [2] Из-за своей полной непригодности для обеспечения реальной секретности ROT13 стал крылатым выражением для обозначения любой явно слабой шифрования схемы ; критик может заявить, что «в наши дни 56-битный DES немногим лучше, чем ROT13». Кроме того, в игре с реальными терминами, такими как «двойной DES», термины «двойной ROT13», «ROT26» или «2ROT13» возникают с юмористическим намерением (из-за того, что, поскольку применение ROT13 к уже зашифрованному ROT13 text восстанавливает исходный открытый текст , ROT26 эквивалентен полному отсутствию шифрования), включая поддельную научную статью под названием «Об алгоритме шифрования 2ROT13». [9] В более широком смысле тройной ROT13 (используемый в шутливой аналогии с 3DES) эквивалентен обычному ROT13.
В декабре 1999 года было обнаружено, что Netscape Communicator использовал ROT13 как часть небезопасной схемы хранения паролей электронной почты. [10] В 2001 году российский программист Дмитрий Скляров продемонстрировал, что поставщик электронных книг New Paradigm Research Group (NPRG) использовал ROT13 для шифрования своих документов; Было высказано предположение, что NPRG могла принять игрушечный пример ROT13, поставляемый с Adobe eBook комплектом разработки программного обеспечения , за серьезную схему шифрования. [11] Windows XP использует ROT13 в некоторых разделах реестра. [12] ROT13 также используется в программе Fortune Unix для сокрытия потенциально оскорбительных высказываний .
Письменные игры и сетевая культура
[ редактировать ]abcdefghijklmnopqrstuvwxyz NOPQRSTUVWXYZABCDEFGHIJKLM | |
aha ↔ nun | ant ↔ nag |
balk ↔ onyx | bar ↔ one |
barf ↔ ones | be ↔ or |
bin ↔ ova | ebbs ↔ roof |
envy ↔ rail | er ↔ re |
errs ↔ reef | flap ↔ sync |
fur ↔ she | gel ↔ try |
gnat ↔ tang | irk ↔ vex |
clerk ↔ pyrex | purely ↔ cheryl |
PNG ↔ cat | SHA ↔ fun |
furby ↔ sheol | terra ↔ green |
what ↔ Jung | URL ↔ hey |
purpura ↔ Chechen | shone ↔ FUBAR |
Ares ↔ Nerf | abjurer ↔ nowhere |
ROT13 предоставляет возможность игры с буквами. Некоторые слова при преобразовании с помощью ROT13 дадут другое слово. Примеры семибуквенных пар в английском языке : отрекающийся и нигде , а также чеченский и пурпурура . Другие примеры подобных слов приведены в таблице. [13] Пара комар и запах является примером слов, которые являются как обратными, так и обратными значениями ROT13.
В 1989 году на Международном конкурсе запутанного кода C (IOCCC) была представлена работа Брайана Уэстли. Уэстли Компьютерная программа может быть закодирована в ROT13 или перевернута и при этом компилироваться правильно. Его операция при выполнении заключается либо в выполнении кодирования ROT13, либо в обратном направлении ввода. [14]
Группа новостей alt.folklore.urban придумала слово — фуррфу — которое было кодировкой ROT13 часто кодируемого высказывания « шиш ». " Furrfu«развился в середине 1992 года как ответ на сообщения, повторяющие городские мифы на alt.folklore.urban, после того, как некоторые плакаты жаловались, что «Боже!» в качестве ответа новичкам злоупотребляют. [15]
Варианты
[ редактировать ]ROT5 — это практика, аналогичная ROT13, которая применяется к числовым цифрам (от 0 до 9). ROT13 и ROT5 могут использоваться вместе в одном сообщении, иногда называемом ROT18 (18 = 13 + 5) или ROT13.5.
ROT47 является производным от ROT13, который, помимо шифрования основных букв, обрабатывает цифры и общие символы. Вместо использования последовательности A–Z В качестве алфавита ROT47 использует больший набор символов из общей кодировки символов, известной как ASCII . В частности, 7-битные печатные символы, исключая пробел, из десятичных 33'. !'через 126' ~', всего 94, взятых в порядке числовых значений их кодов ASCII, повернуты на 47 позиций без специального учета регистра. Например, персонаж A отображается на p, пока a отображается на 2. Использование более крупного алфавита приводит к более тщательному запутыванию, чем в ROT13; например, номер телефона, например +1-415-839-6885 не очевидно на первый взгляд по зашифрованному результату Z'\c`d\gbh\eggd. С другой стороны, поскольку ROT47 вводит в смесь цифры и символы без различия, становится более очевидным, что текст был закодирован.
Пример:
- The Quick Brown Fox Jumps Over The Lazy Dog.
шифрует в
- %96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8]
Библиотека GNU C , набор стандартных процедур, доступных для использования в компьютерном программировании , содержит функцию — memfrob()[16] — который имеет то же назначение, что и ROT13, хотя предназначен для использования с произвольными двоичными данными. Функция работает путем объединения каждого байта с двоичным шаблоном 00101010 ( 42 ) с использованием исключающей операции или (XOR). Это приводит к простому шифру XOR . Как и ROT13, XOR (и, следовательно, memfrob()) является взаимообратным и обеспечивает аналогичный, практически отсутствующий, уровень безопасности.
Выполнение
[ редактировать ]тр
[ редактировать ]ROT13 и ROT47 довольно легко реализовать с помощью терминального приложения Unix. tr; чтобы зашифровать строку «Быстрая коричневая лиса прыгает через ленивую собаку» в ROT13:
$ # Map upper case A-Z to N-ZA-M and lower case a-z to n-za-m$ tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< "The Quick Brown Fox Jumps Over The Lazy Dog"Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt
и та же строка для ROT47:
$ echo "The Quick Brown Fox Jumps Over The Lazy Dog" | tr '\!-~' 'P-~\!-O'%96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8
Эмакс и Вим
[ редактировать ]В Emacs можно ROT13 буфера или выделения с помощью команд [17] M-x toggle-rot13-mode
, M-x rot13-other-window
, или M-x rot13-region
.
В текстовом редакторе Vim можно повернуть буфер с помощью команды [18] ggg?G
.
Питон
[ редактировать ]Модуль кодеки обеспечивают Преобразование текста «rot13» . [19]
>>> import codecs>>> print(codecs.encode('The Quick Brown Fox Jumps Over The Lazy Dog', 'rot13'))Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt
Без импорта каких-либо библиотек это можно сделать в виде двухстрочного списка :
string = "Quartz glyph job vext cwm porshrop finks?!"for abcd in ["abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"]: string = ''.join([abcd[(abcd.index(char) + 13) % 26] if char in abcd else char for char in string])print(string)# Dhnegm tylcu wbo irkg pjz cbefuebc svaxf?!
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Кристофер Свенсон (17 марта 2008 г.). Современный криптоанализ: методы расширенного взлома кода . Джон Уайли и сыновья. п. 5. ISBN 978-0-470-13593-8 . Архивировано из оригинала 24 июня 2016 года . Проверено 5 октября 2015 г.
- ^ Перейти обратно: а б с д Шнайер, Брюс (1996). Прикладная криптография (второе изд.). Джон Уайли и сыновья. стр. 11 . ISBN 0-471-11709-9 .
- ^ Кан, Дэвид . Взломщики кодов: история тайного письма . Нью-Йорк: Макмиллан. ISBN 0-684-83130-9 .
- ^ Симанек, Дональд Э. (2012). «Вечная тщетность: Краткая история поиска вечного двигателя» . Музей неисправных устройств . Архивировано из оригинала 10 октября 2020 года . Проверено 28 октября 2020 г.
- ^ desoto!gog (8 октября 1982 г.). "очень мягкая непристойная шутка, сдвиг=13" . Группа новостей : net.jokes .
- ^ utcsrgv!dave (8 октября 1982 г.). «зашифрованные шутки» . Группа новостей : net.jokes .
- ^ Перейти обратно: а б с Раймонд, Эрик С. , изд. (29 декабря 2003 г.). «РОТ13» . Файл жаргона, 4.4.7 . Архивировано из оригинала 13 января 2012 года . Проверено 19 сентября 2007 г.
- ^ Фернер, Мэтт (9 декабря 2010 г.). «Как скрыть адреса электронной почты от спам-ботов» . Практическая электронная коммерция. Архивировано из оригинала 8 мая 2016 года . Проверено 12 июня 2014 г.
- ^ «Об алгоритме шифрования 2ROT13» (PDF) . Prüfziffernberechnung in der Praxis. 25 сентября 2004 г. Архивировано (PDF) из оригинала 15 апреля 2012 г. . Проверено 20 сентября 2007 г.
- ^ Холлебек, Тим; Виега, Джон . «Плохая криптография в браузере Netscape: пример». CiteSeerX 10.1.1.15.9271 .
- ^ Перенс, Брюс (1 сентября 2001 г.). «Дмитрий Скляров: враг или друг?» . Новости ЗДНет . Архивировано из оригинала 17 октября 2014 года . Проверено 3 февраля 2011 г.
- ^ «ROT13 используется в Windows» . 24 июля 2006 г. Архивировано из оригинала 20 декабря 2016 г. Проверено 15 декабря 2016 г. .
- ^ Де Малдер, Том. «Слова ROT13» . Фуррфу! . Архивировано из оригинала 2 апреля 2012 года . Проверено 19 сентября 2007 г.
- ^ Уэстли, Брайан (1989). "Уэстли.с" . МОККЦ . Архивировано из оригинала 9 июня 2012 года . Проверено 13 августа 2007 г.
- ^ «Фуррфу» . Фолдок . 25 октября 1995 года. Архивировано из оригинала 14 июля 2014 года . Проверено 3 октября 2016 г.
- ^ «5.13 Запутывание данных» . Справочное руководство по библиотеке GNU C. Фонд свободного программного обеспечения . 3 декабря 2006 г. Архивировано из оригинала 2 августа 2019 г. Проверено 2 августа 2019 г.
- ^ «Rmail Rot13 - Руководство по GNU Emacs». Архивировано 24 марта 2016 г. на Wayback Machine . www.gnu.org .
- ^ «Лучшие советы по VIM, ключевые особенности gVIM zzapper» . www.rayninfo.co.uk . 3 марта 2016 г. Архивировано из оригинала 3 марта 2016 г.
- ^ «кодеки — реестр кодеков и базовые классы — документация Python 3.9.6» . www6.python.org . 2 ноября 2023 г. Архивировано из оригинала 6 октября 2020 г. Проверено 7 октября 2020 г.
Внешние ссылки
[ редактировать ]- Онлайн-конвертер для ROT13, ROT5, ROT18, ROT47, Атбаша и шифра Цезаря .
- ROT13 в текст на PureTables.com