ROT13 - ROT13

ROT13 заменяет каждую букву ее партнером на 13 символов дальше по алфавиту. Например, ПРИВЕТ становится УРЫЫБ (или, наоборот, УРЫЫБ становится ПРИВЕТ опять таки).

ROT13 ("повернуть на 13 мест", иногда через дефис РОТ-13) простая буква подстановочный шифр который заменяет букву 13-й буквой после нее в алфавите. ROT13 - это частный случай Шифр цезаря который был разработан в Древнем Риме.

Потому что в строке 26 букв (2 × 13) основной латинский алфавит, ROT13 является собственным обратный; то есть, чтобы отменить ROT13, то же самое алгоритм применяется, поэтому одно и то же действие можно использовать для кодирования и декодирования. Алгоритм практически не дает криптографический безопасности, и его часто называют каноническим примером слабого шифрования.[1]

ROT13 используется в онлайн-форумы как средство сокрытия спойлеры, изюминки, решения головоломок и оскорбительные материалы от случайного взгляда. ROT13 послужил вдохновением для создания множества онлайн-игр с буквами и словами и часто упоминается в группа новостей разговоры.

Описание

Применение ROT13 к фрагменту текста просто требует изучения его буквенных символов и замены каждого из них буквой, расположенной на 13 местах дальше в алфавит, при необходимости вернувшись к началу.[2]А становится N, B становится O, и так далее до M, который становится Z, затем последовательность продолжается в начале алфавита: N становится А, O становится Bи так далее до Z, который становится M. Только те буквы, которые встречаются в английский алфавит под действием; числа, символы, пробелы и все остальные символы остаются без изменений. Поскольку в английском алфавите 26 букв и 26 = 2 × 13, функция ROT13 является собственной обратный:[2]

для любого основного текста на латинице Икс.

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

Преобразование может быть выполнено с помощью Справочная таблица, например:

ВходABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
ВыходNOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

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

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

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

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

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

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

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

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

ROT13 использовался в сетевых розыгрышах группа новостей к началу 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 тексту восстанавливает исходный простой текст, ROT26 эквивалентен отсутствию шифрования вообще), в том числе подделку академической статьи под названием «Об алгоритме шифрования 2ROT13».[9] В более широком смысле, тройной ROT13 (используемый в шутливой аналогии с 3DES) эквивалентен обычному ROT13.

В декабре 1999 г. было установлено, что Коммуникатор Netscape использовал ROT13 как часть небезопасной схемы хранения паролей электронной почты.[10] В 2001 году русский программист Димитрий Скляров продемонстрировали, что поставщик электронных книг, New Paradigm Research Group (NPRG), использовал ROT13 для шифрования своих документов; предполагалось, что NPRG могла ошибиться с игрушечным примером ROT13 - снабженным Adobe электронная книга комплект для разработки программного обеспечения - для серьезной схемы шифрования.[11] Windows XP использует ROT13 в некоторых разделах реестра.[12] ROT13 также используется в Программа удачи Unix чтобы скрыть потенциально оскорбительные высказывания.

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

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ
NOPQRSTUVWXYZABCDEFGHIJKLM
Агамонахинямуравейворчать
упиратьсяониксбародин
барфтебытьили же
мусорное ведрояйцеклеткаотливыкрыша
завидоватьрельсэповторно
ошибаетсярифхлопатьсинхронизировать
мехонагельпытаться
комарзапахраздражатьраздражать
клеркпирексчистоШерил
PNGКотSHAвесело
Furbyшеолтерразеленый
КакиеЮнгURLПривет
пурпураЧеченскийсиялФУБАР
АресНерф отказникнигде

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

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

Группа новостей alt.folklore.urban придумала слово -Furrfu- это была кодировка ROT13 часто кодируемого высказывания »шиш ". "Furrfu"возникла в середине 1992 года в ответ на повторяющиеся публикации городские мифы на alt.folklore.urban после того, как некоторые плакаты жаловались, что "Шиш!" в ответ на новички злоупотребляли.[15]

Варианты

ROT5 - это практика, аналогичная ROT13, которая применяется к числовым цифрам (от 0 до 9). ROT13 и ROT5 могут использоваться вместе в одном сообщении, иногда называемом ROT18 (18 = 13 + 5) или ROT13.5.

ROT47 является производным от ROT13, который, помимо шифрования основных букв, обрабатывает числа и общие символы. Вместо использования последовательности А – Я в качестве алфавита ROT47 использует больший набор символов из общих кодировка символов известный как ASCII. В частности, 7-битные печатаемые символы, исключая пробел, из десятичной 33 '!'через 126'~', Всего 94, взятых в порядке числовых значений их кодов ASCII, повернуты на 47 позиций без особого учета регистра. Например, персонаж А отображается на п, пока а отображается на 2. Использование более крупного алфавита обеспечивает более тщательную обфускацию, чем ROT13; например, номер телефона, такой как +1-415-839-6885 не очевидно на первый взгляд из зашифрованного результата Z` c`d gbh eggd. С другой стороны, поскольку ROT47 вводит числа и символы в микс без различения, более очевидно, что текст был зашифрован.

Пример:

Быстрая коричневая лиса прыгает через ленивую собаку.

шифрует

% 96 "F: 4 AD ~ G6C% 96 {2 кДж с @ 8]

В Библиотека GNU C, набор стандартных процедур, доступных для использования в компьютерное программирование, содержит функциямемлягушка()[16]- который имеет ту же цель, что и ROT13, хотя предназначен для использования с произвольными двоичными данными. Функция работает путем объединения каждого байт с двоичный узор 00101010 (42 ) с использованием Эксклюзивный или (XOR) операция. Это влияет на простой шифр XOR. Подобно ROT13, XOR (и, следовательно, memfrob ()) является взаимно взаимным и обеспечивает аналогичный, практически отсутствующий, уровень безопасности.

Выполнение

tr

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

$ # Сопоставить верхний регистр A-Z с N-ZA-M и нижний регистр a-z с n-za-m$ tr 'A-Za-z' 'Н-ЗА-Мн-за-м' <<< "Быстрая коричневая лиса прыгает через ленивую собаку"Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt

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

$ эхо "Быстрая коричневая лиса прыгает через ленивую собаку" | tr '\!-~' 'П- ~ ! - О'%96 "F: 4  AD ~ G6C% 96 {2 кДж с @ 8

Emacs и Vim

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

M-x toggle-rot13-modeM-x rot13-other-windowM-x rot13-область

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

ggg? G

Python

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

>>> импорт этоДзен Питона, Тим ПитерсКрасивое лучше уродливого.Явное лучше, чем неявное.Лучше простое, чем сложное.Сложный лучше, чем сложный.Плоский лучше, чем вложенный.Лучше разреженное, чем плотное.Читаемость имеет значение.Особых случаев недостаточно, чтобы нарушать правила.Хотя практичность лучше чистоты.Ошибки никогда не должны проходить незаметно.Если явно не отключен.Перед лицом двусмысленности откажитесь от соблазна угадать.Должен быть один - а желательно только один - очевидный способ сделать это.Хотя сначала этот способ может быть не очевиден, если вы не голландец.Лучше сейчас, чем никогда.Хотя никогда не бывает лучше, чем прямо сейчас.Если реализацию трудно объяснить, это плохая идея.Если реализацию легко объяснить, это может быть хорошей идеей.Пространства имен - одна отличная идея - давайте сделаем их больше!>>> с открыто(это.__файл__) в качестве ж:...     Распечатать(ж.читать())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]

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

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

Рекомендации

  1. ^ Первые случаи использования ROT13, обнаруженные в архиве Google USENET, относятся к 8 октября 1982 г., опубликованы в net.jokes группа новостей.[5][6]
  1. ^ Кристофер Свенсон (17 марта 2008 г.). Современный криптоанализ: методы расширенного взлома кода. Джон Вили и сыновья. п. 5. ISBN  9780470135938.
  2. ^ а б c d Шнайер, Брюс (1996). Прикладная криптография (Второе изд.). Джон Вили и сыновья. стр.11. ISBN  0-471-11709-9.
  3. ^ Кан, Дэвид. Взломщики кодов: история тайного письма. Нью-Йорк: Макмиллан. ISBN  0-684-83130-9.
  4. ^ Симанек, Дональд Э. (2012). «Perpetual Futility: краткая история поиска вечного двигателя». Музей неработающих устройств.
  5. ^ desoto! gog (8 октября 1982 г.). "очень мягко непристойная шутка, shift = 13". Группа новостейnet.jokes.
  6. ^ utcsrgv! Дэйв (8 октября 1982 г.). "зашифрованные анекдоты". Группа новостейnet.jokes.
  7. ^ а б c Раймонд, Эрик С. (ред.) (29 декабря 2003 г.). «РОТ13». Файл жаргона, 4.4.7. Получено 19 сентября 2007.CS1 maint: дополнительный текст: список авторов (связь)[ненадежный источник? ]
  8. ^ Фернер, Мэтт. «Как скрыть адреса электронной почты от спам-ботов». Практичный. Получено 12 июн 2014.
  9. ^ «Об алгоритме шифрования 2ROT13» (PDF). Prüfziffernberechnung in der Praxis. 25 сентября 2004 г.. Получено 20 сентября 2007.
  10. ^ Холлебек, Тим; Вьега, Джон. «Плохая криптография в браузере Netscape: пример из практики». Надежные программные технологии. CiteSeerX  10.1.1.15.9271. Цитировать журнал требует | журнал = (помощь)
  11. ^ Перенс, Брюс (1 сентября 2001 г.). «Дмитрий Скляров: враг или друг?». Новости ZDNet. Получено 3 февраля 2011.
  12. ^ «ROT13 используется в Windows». 24 июля 2006 г.. Получено 15 декабря 2016.
  13. ^ Де Малдер, Том. "ROT13 слов". Фуррфу!. Получено 19 сентября 2007.
  14. ^ Уэстли, Брайан (1989). "westley.c". IOCCC. Получено 13 августа 2007.
  15. ^ "Фуррфу". Foldoc. 25 октября 1995 г.. Получено 3 октября 2016.
  16. ^ «5.13 Обфускация данных». Справочное руководство библиотеки GNU C. Фонд свободного программного обеспечения. 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".