РОТ13

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

ROT13 — это простой шифр замены букв , который заменяет букву на 13-ю после нее букву в латинском алфавите .

ROT13 — это особый случай шифра Цезаря , который был разработан в Древнем Риме и использовался Юлием Цезарем в I веке до нашей эры. [1] Ранняя запись на временной шкале криптографии .

ROT13 может обозначаться как «Rotate13», «rotate by 13 places», через дефис «ROT-13» или иногда его автонимом «EBG13».

Описание

Применение ROT13 к фрагменту текста требует проверки его алфавитных символов и замены каждого из них буквой, стоящей на 13 позиций дальше в алфавите , при необходимости возвращаясь к началу. [2]

To encode message: Aстановится N, Bстановится Oи так далее до M, который становится Z, затем последовательность продолжается в начале алфавита: Nстановится A, Oстановится Bи так далее до Z, который становится M. Чтобы расшифровать сообщение, вы применяете те же правила подстановки, но на этот раз к зашифрованному тексту ROT13. (Любые другие символы, например цифры, символы, знаки препинания или пробелы , остаются неизменными.)

Поскольку в латинском алфавите 26 букв и 26 = 2 × 13, функция ROT13 является обратной самой себе : [2]

Гниение 13 ( Гниение 13 ( х ) ) = х {\displaystyle {\mbox{ROT}}_{13}({\mbox{ROT}}_{13}(x))=x} для любого базового текста на латинице x .

Другими словами, два последовательных применения ROT13 восстанавливают исходный текст (в математике это иногда называется инволюцией ; в криптографии — обратным шифром ).

Преобразование можно выполнить с помощью таблицы поиска , например следующей:

ВходABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
ВыходNOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

Например, в следующей шутке смысл шутки скрыт ROT13:

Почему курица перешла дорогу?
Gb trg gb gur bgure fvqr!

Преобразовав весь текст с помощью формы ROT13, получаем ответ на шутку:

Июль qvq gur puvpxra pebff gur ebnq?
Чтобы попасть на другую сторону!

Повторное применение ROT13 восстановит оригинал.

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

ROT13 не предназначен для использования в наше время. Во время зачатия в эпоху древнеримских технологий схема шифрования не была представлена ​​математической структурой . Ключ к расшифровке сообщения требует не больше знаний, чем сам факт использования ROT13. Даже если секретность не подведет, любая инопланетная сторона или лицо, способное перехватить сообщение, может взломать код, потратив достаточно времени на расшифровку текста с помощью частотного анализа [2] или нахождения других закономерностей .

В начале 80-х годов ROT13 предположительно использовался на серверах новостных групп Usenet [3] Это было сделано для того, чтобы скрыть потенциально оскорбительные шутки, или запутать ответ на головоломку или другой спойлер [4] , или обмануть менее искушенных спам-ботов [ dubiousdiscussion ] . ROT13 стал предметом множества шуток.

В 1989 году на Международном конкурсе запутанного кода C (IOCCC) была представлена ​​запись Брайана Уэстли. Компьютерная программа Уэстли может быть закодирована в ROT13 или реверсирована и все равно будет правильно компилироваться . Ее работа при выполнении заключается либо в выполнении кодирования ROT13, либо в реверсировании входных данных. [5]

В декабре 1999 года было обнаружено, что Netscape Communicator использовал ROT13 как часть небезопасной схемы хранения паролей электронной почты. [6]

В 2001 году российский программист Дмитрий Скляров продемонстрировал, что поставщик электронных книг, New Paradigm Research Group (NPRG), использовал ROT13 для шифрования своих документов. Было высказано предположение, что NPRG могла ошибочно принять игрушечный пример ROT13, предоставленный в комплекте разработки программного обеспечения Adobe eBook , за серьезную схему шифрования. [7] Windows XP использует ROT13 в некоторых своих ключах реестра. [8] ROT13 также используется в программе Unix fortune для сокрытия потенциально оскорбительных высказываний .

Иоганн Эрнст Элиас Бесслер , часовщик XVIII века и конструктор вечных двигателей , указал, что ROT13 кодирует его фамилию как Orffyre . Он использовал ее латинизированную форму, Orffyreus , в качестве своего псевдонима. [9]

Сетевая культура

Из-за своей полной непригодности для настоящей секретности ROT13 стал крылатой фразой для обозначения любой явно слабой схемы шифрования ; критик может заявить, что «56-битный DES в наши дни немногим лучше ROT13». В игре с реальными терминами, такими как «двойной DES», несколько терминов возникли с юмористическим умыслом:

  • Двойной ROT13: применение ROT13 к уже зашифрованному с помощью ROT13 тексту восстанавливает исходный открытый текст .
  • ROT26: эквивалентно полному отсутствию шифрования.
  • 2ROT13 был включен в поддельную академическую статью под названием «Об алгоритме шифрования 2ROT13». [10]
  • тройной ROT13: используется в шутку по аналогии с 3DES, эквивалентен обычному ROT13.

Шутки ROT13 были популярны на многих серверах новостных групп , таких как net.jokes, еще в 1980-х годах. [3]

Новостная группа alt.folklore.urban придумала слово — furrfu — которое было кодировкой ROT13 часто используемого высказывания «sheesh». « Furrfu» появилось в середине 1992 года в ответ на сообщения, повторяющие городские мифы на alt.folklore.urban, после того как некоторые пользователи пожаловались, что «Sheesh!» в качестве ответа новичкам используется слишком часто. [11]

Использование поисковой системы в публичных социальных сетях и по сей день выдает результаты по запросу ROT13 в шутках.

Игры с буквами

abcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLM
ahanunantnag
balkonyxbarone
barfonesbeor
binovaebbsroof
envyrailerre
errsreefflapsync
furshegeltry
gnattangirkvex
clerkpyrexpurelycheryl
PNGcatSHAfun
furbysheolterragreen
whatJungURLhey
purpuraChechenshoneFUBAR
AresNerfabjurernowhere

ROT13 предоставляет возможность для игр с буквами. Некоторые слова при преобразовании с помощью ROT13 дадут другое слово. Примерами пар из 7 букв в английском языке являются abjurer и nothing , а также Czech и purpura . Другие примеры таких слов показаны в таблице. [12] Пара gnat и tang является примером слов, которые являются как обратными, так и обратными ROT13.

Варианты и комбинации

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 , набор стандартных процедур, доступных для использования в компьютерном программировании , содержит функцию[13] — которая имеет схожее назначение с ROT13, хотя она предназначена для использования с произвольными двоичными данными. Функция работает, объединяя каждый байт с двоичным шаблоном 00101010 ( 42 ) с помощью операции исключающего или (XOR). Это производит простой шифр XOR . Как и ROT13, XOR (и, следовательно , ) является самообратным и обеспечивает аналогичный, фактически отсутствующий, уровень безопасности.memfrob()memfrob()

Выполнение

тр

ROT13 и ROT47 довольно легко реализовать с помощью терминального приложения Unix tr; для шифрования строки «Упакуйте мою коробку пятью дюжинами бутылок с ликером» в ROT13:

$ # Преобразовать заглавные буквы AZ в N-ZA-M и строчные буквы az в n-za-m $ tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< "Упакуйте мою коробку с пятью дюжинами кувшинов для спиртного" Cnpx Zl Obk Jvgu Svir Qbmra Yvdhbe Whtf    

и строка «Быстрая коричневая лиса перепрыгивает через ленивую собаку» для ROT47:

$ echo "Быстрая коричневая лиса перепрыгивает через ленивую собаку" | tr '\!-~' 'P-~\!-O' % 96 "F:4< qC@H? u@I yF>AD ~G6C %96 {2KJ s@8      

Emacs и Vim

В Emacs можно выполнить ROT13 для буфера или выделения с помощью команд [14] M-x toggle-rot13-mode , M-x rot13-other-window, или M-x rot13-region.

В текстовом редакторе Vim можно ROT13 буфера с помощью команды [15] ggg?G .

Питон

Модуль кодеков обеспечивает преобразование текста «rot13» . [16]

>>>  импорт  кодеков >>>  печать ( кодеки . кодировать ( "Быстрая коричневая лиса прыгает через ленивую собаку" ,  "rot13" )) Gur  Dhvpx  Oebja  Sbk  Whzcf  Bire  Gur  Ynml  Qbt

Без импорта каких-либо библиотек это можно сделать в двухстрочном списке :

string  =  "Кварцевый глиф работа vext cwm поршроп финкс?!"для  abcd  в  [ "abcdefghijklmnopqrstuvwxyz" ,  "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ]: строка  =  "" . join ([ abcd [( abcd . index ( char )  +  13 )  %  26 ]  если  char  в  abcd  иначе  char  для  char  в  string ])печать ( строка )# Dhnegm tylcu wbo irkg pjz cbefuebc svaxf?!

Для Python 3 можно использовать метод str.maketrans()

текст  =  "это пример без заглавных букв"my_rot13  =  str . maketrans (  "abcdefghijklmnopqrstuvwxyz" ,  "nopqrstuvwxyzabcdefghijklm" )распечатать ( текст.перевести ( my_rot13 ) )# guvf vf na rknzcyr jvgubhg pncvgny yrggref

Смотрите также

Ссылки

  1. ^ Кан, Дэвид . Дешифровальщики: История тайнописи . Нью-Йорк: Macmillan. ISBN 0-684-83130-9.
  2. ^ abc Шнайер, Брюс (1996). Прикладная криптография (Второе издание). John Wiley & Sons. С. 11. ISBN 0-471-11709-9.
  3. ^ ab Raymond, Eric S. , ed. (29 декабря 2003 г.). "ROT13". The Jargon File, 4.4.7 . Архивировано из оригинала 13 января 2012 г. Получено 19 сентября 2007 г.
  4. ^ Хамбридж, Салли (1 октября 1995 г.). «RFC 1855 — Руководство по сетевому этикету». Internet Engineering Task Force. Архивировано из оригинала 2 января 2025 г. Получено 2 января 2025 г.
  5. ^ Westley, Brian (1989). "westley.c". IOCCC . Архивировано из оригинала 9 июня 2012 года . Получено 13 августа 2007 года .
  6. ^ Холлебик, Тим; Виега, Джон . «Плохая криптография в браузере Netscape: исследование случая». CiteSeerX 10.1.1.15.9271 . 
  7. ^ Перенс, Брюс (1 сентября 2001 г.). «Дмитрий Скляров: враг или друг?». ZDNet News . Архивировано из оригинала 17 октября 2014 г. Получено 3 февраля 2011 г.
  8. ^ "ROT13 используется в Windows". 24 июля 2006 г. Архивировано из оригинала 20 декабря 2016 г. Получено 15 декабря 2016 г.
  9. ^ Симанек, Дональд Э. (2012). «Вечная тщетность: краткая история поиска вечного движения». Музей неработающих устройств . Архивировано из оригинала 10 октября 2020 г. Получено 28 октября 2020 г.
  10. ^ "On the 2ROT13 Encryption Algorithm" (PDF) . Prüfziffernberechnung in der Praxis. 25 сентября 2004 г. Архивировано (PDF) из оригинала 15 апреля 2012 г. Получено 20 сентября 2007 г.
  11. ^ "Furrfu". Foldoc . 25 октября 1995 г. Архивировано из оригинала 14 июля 2014 г. Получено 3 октября 2016 г.
  12. ^ Де Малдер, Том. "Слова ROT13". Furrfu! . Архивировано из оригинала 2 апреля 2012 года . Получено 19 сентября 2007 года .
  13. ^ "5.13 Обфускация данных". Справочное руководство по библиотеке GNU C. Free Software Foundation . 3 декабря 2006 г. Архивировано из оригинала 2 августа 2019 г. Получено 2 августа 2019 г.
  14. ^ «Rmail Rot13 – GNU Emacs Manual» Архивировано 24 марта 2016 г. на Wayback Machine . www.gnu.org .
  15. ^ "Лучшие советы по VIM, ключевые возможности gVIM zzapper". rayninfo.co.uk . 3 марта 2016 г. Архивировано из оригинала 3 марта 2016 г.
  16. ^ "кодеки – Реестр кодеков и базовые классы – Документация Python 3.9.6". ww6.python.org . 2 ноября 2023 г. Архивировано из оригинала 6 октября 2020 г. Получено 7 октября 2020 г.
  • Онлайн-конвертер для шифров ROT13, ROT5, ROT18, ROT47, Atbash и Caesar .
  • ROT13 в текст на PureTables.com
Взято с "https://en.wikipedia.org/w/index.php?title=ROT13&oldid=1272033583"