Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

ROT13 заменяет каждую букву ее партнером на 13 символов дальше по алфавиту. Например, HELLOстановится URYYB(или, наоборот, URYYBстановится HELLOснова).

ROT13повернуть на 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 восстанавливают исходный текст (в математике это иногда называют инволюцией ; в криптографии - обратным шифром ).

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

Например, в следующем анекдоте изюминка была скрыта ROT13:

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

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

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

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

Использование [ править ]

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

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

ROT13 использовался в группе новостей net.jokes к началу 1980-х годов. [a] Он используется, чтобы скрыть потенциально оскорбительные шутки или скрыть ответ на загадку или другой спойлер . [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 тексту восстанавливает исходный открытый текст , 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 для сокрытия потенциально оскорбительных высказываний.

Письменные игры и сетевая культура [ править ]

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

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

Реализация [ править ]

tr [ править ]

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

$  # Сопоставить верхний регистр AZ с N-ZA-M и нижний регистр az с n-za-m $ tr 'A-Za-z'  'N-ZA-Mn-za-m'  <<<  "The Quick Brown Fox Прыгает через ленивого пса " Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt

и такая же строка для ROT47:

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

Emacs и Vim [ править ]

В Emacs можно перевернуть буфер или выделение с помощью следующих команд: [17]

Mx toggle-rot13-режимMx rot13-другое-окноMx rot13-регион

а в текстовом редакторе Vim можно ROT13 буфер с помощью команды: [18]

ggg? G

Python [ править ]

В Python модуль this реализован с использованием ROT13: [19]

>>> импортировать  этот Дзен Python, Тим ПитерсКрасивое лучше уродливого. Явное лучше, чем неявное. Лучше простое, чем сложное. Сложный лучше, чем сложный. Плоский лучше, чем вложенный. Лучше разреженное, чем плотное. Читаемость имеет значение. Особых случаев недостаточно, чтобы нарушать правила. Хотя практичность лучше чистоты. Ошибки никогда не должны проходить незаметно. Если явно не отключен. Перед лицом двусмысленности откажитесь от соблазна угадать. Должен быть один - а желательно только один - очевидный способ сделать это. Хотя сначала этот способ может быть не очевиден, если вы не голландец. Лучше сейчас, чем никогда. Хотя никогда не бывает лучше, чем прямо сейчас.Если реализацию трудно объяснить, это плохая идея. Если реализацию легко объяснить, это может быть хорошей идеей. Пространства имен - одна отличная идея - давайте сделаем их больше!>>> с  open ( this . __file__ )  как  f : ...  print ( f . read ()) s = "" "Gur Mra bs Clguba, ol Gvz CrgrefОрнхгвший вф орггре гуна хтыл. Rkcyvpvg vf orggre guna vzcyvpvg. Fvzcyr vf orggre guna pbzcyrk. Pbzcyrk vf orggre guna pbzcyvpngrq. Syng vf orggre guna arfgrq. Fcnefr vf orggre guna qrafr. Ernqnovyvgl pbhagf. Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf. Nygubhtu cenpgvpnyvgl orngf chevgl. Reebef fubhyq arire cnff fvyragyl. Hayrff rkcyvpvgyl fvyraprq. Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thff. Gurer fubhyq или bar - naq cersrenoyl bayl bar --boivbhf jnl gb qb vg. Nygubhtu gung jnl znl abg или boivbhf ng svefg hayrff lbh'er Qhgpu. Abj vf orggre guna arire. Nygubhtu arire vf bsgra orggre guna * evtug * abj.Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn. Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl или n tbbq vqrn. Anzrfcnprf ner bar ubaxvat terng vqrn - yrg'f qb zber bs gubfr! "" "d = {} для c в (65, 97):  для i в диапазоне (26):  d [chr (i + c)] = chr ((i + 13)% 26 + c)print ("". join ([d.get (c, c) вместо c в s]))

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

>>> импорт  кодеков >>> print ( codecs . encode ( this . s ,  'rot13' )) Дзен Python, Тим ПитерсКрасивое лучше уродливого. Явное лучше, чем неявное. Лучше простое, чем сложное. Сложный лучше, чем сложный. Плоский лучше, чем вложенный. Лучше разреженное, чем плотное. Читаемость имеет значение. Особых случаев недостаточно, чтобы нарушать правила. Хотя практичность лучше чистоты. Ошибки никогда не должны проходить незаметно. Если явно не отключен. Перед лицом двусмысленности откажитесь от соблазна угадать. Должен быть один - а желательно только один - очевидный способ сделать это. Хотя сначала этот способ может быть не очевиден, если вы не голландец. Лучше сейчас, чем никогда. Хотя никогда не бывает лучше, чем прямо сейчас.Если реализацию трудно объяснить, это плохая идея. Если реализацию легко объяснить, это может быть хорошей идеей. Пространства имен - одна отличная идея - давайте сделаем их больше!

См. Также [ править ]

  • Криптоанализ
  • Атбаш

Ссылки [ править ]

  1. Первые случаи использования ROT13, найденные в архиве Google USENET, относятся к 8 октября 1982 года и опубликованы вnet.jokesгруппе новостей. [5] [6]
  1. Кристофер Свенсон (17 марта 2008 г.). Современный криптоанализ: методы расширенного взлома кода . Джон Вили и сыновья. п. 5. ISBN 9780470135938.
  2. ^ a b c d Шнайер, Брюс (1996). Прикладная криптография (второе изд.). Джон Вили и сыновья. С.  11 . ISBN 0-471-11709-9.
  3. ^ Кан, Дэвид . Взломщики кодов: история секретного письма . Нью-Йорк: Макмиллан. ISBN 0-684-83130-9.
  4. ^ Шиманек, Donald E. (2012). «Perpetual Futility: Краткая история поиска вечного двигателя» . Музей неработающих устройств .
  5. ^ desoto! gog (8 октября 1982 г.). "очень мягко непристойная шутка, смещение = 13" . Группа новостейnet.jokes .
  6. ^ utcsrgv! dave (8 октября 1982 г.). «зашифрованные анекдоты» . Группа новостейnet.jokes .
  7. ^ a b c Raymond, Эрик С. (редактор) (29 декабря 2003 г.). «РОТ13» . Файл жаргона, 4.4.7 . Проверено 19 сентября 2007 года .CS1 maint: дополнительный текст: список авторов ( ссылка )[ ненадежный источник? ]
  8. ^ Фернер, Мэтт. «Как скрыть адреса электронной почты от спам-ботов» . PracticalEcommerce . Проверено 12 июня 2014 .
  9. ^ «Об алгоритме шифрования 2ROT13» (PDF) . Prüfziffernberechnung in der Praxis. 25 сентября 2004 . Проверено 20 сентября 2007 года .
  10. ^ Hollebeek, Тим; Вьега, Джон . «Плохая криптография в браузере Netscape: пример из практики». Надежные программные технологии. CiteSeerX 10.1.1.15.9271 .  Цитировать журнал требует |journal=( помощь )
  11. ^ Perens, Брюс (1 сентября 2001). «Дмитрий Скляров: враг или друг?» . Новости ZDNet . Проверено 3 февраля 2011 года .
  12. ^ «ROT13 используется в Windows» . 24 июля 2006 . Проверено 15 декабря 2016 .
  13. Де Малдер, Том. «ROT13 слов» . Фуррфу! . Проверено 19 сентября 2007 года .
  14. ^ Уэстли, Брайан (1989). "westley.c" . IOCCC . Проверено 13 августа 2007 года .
  15. ^ "Furrfu" . Foldoc . 25 октября 1995 . Дата обращения 3 октября 2016 .
  16. ^ «5.13 Обфускация данных» . GNU C Library Reference Manual . Фонд свободного программного обеспечения . 3 декабря 2006 . Дата обращения 2 августа 2019 .
  17. ^ "Rmail Rot13 - Руководство по GNU Emacs" . www.gnu.org .
  18. ^ Лучшие советы по VIM, ключевые особенности gVIM zzapper (ссылка на Интернет-архив)
  19. ^ "cpython: this.py" .
  20. ^ «кодеки - Реестр кодеков и базовые классы - Документация Python 3.9.0» .