ROT13

редактировать
Тип шифра Цезаря

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

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

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

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

Содержание
  • 1 Описание
  • 2 Использование
  • 3-буквенные игры и культура сети
  • 4 Варианты
  • 5 Реализация
    • 5.1 tr
    • 5.2 Emacs и Vim
    • 5.3 Python
  • 6 См. Также
  • 7 Ссылки
Описание

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

ROT 13 (ROT 13 (x)) = x {\ displaystyle {\ t_dv {ROT}} _ {13} ({\ t_dv {ROT}} _ {13} (x)) = x}{\ t_dv {ROT}} _ {13} ({\ t_dv {ROT}} _ {13} (x)) = x для любого основного текста латинского алфавита x.

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

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

ВходABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
Выходной файлNOPQRSTijklstuvmvgdewIHwIHqRSTUVMvgdwIHqRSTUVMVGdexYNOPQRSTUVMVG В следующей шутке основная идея была скрыта ROT13:

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

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

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

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

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

ROT13 использовалось в группе новостей net.jokes к началу 1980-х годов. Он используется, чтобы скрыть потенциально оскорбительные шутки или скрыть ответ на загадку или другой спойлер. Сдвиг тринадцати был выбран по сравнению с другими значениями, такими как три, как в исходном шифре Цезаря, потому что тринадцать - это значение, для которого кодирование и декодирование эквивалентны, тем самым обеспечивая удобство одной команды для обоих. ROT13 обычно поддерживается как встроенная функция программного обеспечения для чтения новостей. Адреса электронной почты также иногда кодируются с помощью ROT13, чтобы скрыть их от менее сложных спам-ботов. Он также используется для обхода проверки электронной почты и фильтрации спама. Скрывая содержимое электронного письма, алгоритм проверки не может идентифицировать электронное письмо как, например, угрозу безопасности, и позволяет ему попасть в почтовый ящик получателя.

ROT13 - это пример алгоритма шифрования, известного как шифр Цезаря, приписываемого Юлию Цезарю в 1 веке до нашей эры.

В зашифрованном нормальном англоязычном тексте любого значительного размера ROT13 можно распознать по некоторым образцам букв / слов. Слова «n», «V» (только с заглавной буквы) и «gur» (ROT13 для «a», «I» и «the») и слова, заканчивающиеся на «yl» («ly»), являются примерами.

ROT13 не предназначен для использования там, где секретность вызывает какие-либо опасения - использование постоянного сдвига означает, что шифрование фактически не имеет ключа, а для дешифрования требуется не больше знаний, чем факт использования ROT13. Даже без этого знания алгоритм легко взломать частотный анализ. Из-за своей полной непригодности для реальной секретности ROT13 стал модной фразой для обозначения любой явно слабой схемы шифрования ; критик может заявить, что «56-битный DES в наши дни немного лучше, чем ROT13». Кроме того, в игре с реальными терминами, такими как «двойной DES», термины «двойной ROT13», «ROT26» или «2ROT13» возникают с юмористическим намерением (из-за того, что, поскольку применение ROT13 к уже зашифрованному ROT13 text восстанавливает исходный открытый текст, ROT26 эквивалентен отсутствию шифрования вообще), включая подделку академической статьи под названием «Об алгоритме шифрования 2ROT13». В более широком смысле, тройной ROT13 (используемый в шутливой аналогии с 3DES) эквивалентен обычному ROT13.

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

Письменные игры и сетевая культура
abcdefghijklmnopqrstuvwxyz. NOPQRSTUVWXYZABCDEFGHIJKLM
агамонахинямуравейnag nag nag <100163>↔ ониксbarone
barfonebeor
binovaebbsкрыша
завистьрейкаerre
ошибаетсярифзаслонкасинхрон
мехонагельпопробуйте
gnattangirkvex
clerkpyrexчистоcheryl
PNGcatSHAfun
furbysheolterraзеленый
whatЮнгURLэй
purpuraчеченецзасветилсяFUBAR
AresNerfabjurerнигде

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

В 1989 International Obfuscated C Code Contest (IOCCC) включил запись Брайана Уэстли. Компьютерная программа Уэстли может быть закодирована в ROT13 или перевернута, и при этом компилирует правильно. Его операция, когда выполняется, заключается либо в выполнении кодирования ROT13, либо в обратном его вводе.

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

Варианты

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 вводит числа и символы в смесь без различения, становится более очевидным, что текст был зашифрован.

Пример:

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

зашифровывает

% 96 "F: 4 < [email#160;protected] ? [email#160;protected] yF>AD ~ G6C% 96 {2KJ s @ 8]

Библиотека GNU C, набор стандартных подпрограмм, доступных для использования в компьютерном программировании, содержит функцию —mem frob (), которая имеет ту же цель, что и ROT13, хотя он предназначен для использования с произвольными двоичными данными. Функция работает путем объединения каждого байта с двоичным шаблоном 00101010 (42 ) с использованием операции исключающее или (XOR). Это приводит к простому шифру XOR. Как и ROT13, XOR (и, следовательно, 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 Jumps Over The Lazy Dog" Gur Dhvpx Oebja Sbk Whzcf Bire Gur Ynml Qbt

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

$ echo «Быстрая коричневая лисица перепрыгивает через ленивого пса» | tr '\! - ~' 'P- ~ \! - O'% 96 "F: 4 < [email#160;protected] ? [email#160;protected] yF>AD ~ G6C% 96 {2KJ s @ 8

Emacs и Vim

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

Mx toggle-rot13-mode Mx rot13-other-window Mx ​​rot13-region

и в, можно ROT13 буфер с помощью команды:

ggg? G

Python

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

>>>import это Дзен Python, автор Тим Питерс. Красивое лучше, чем уродливое. Явное лучше, чем неявное. Простое лучше, чем сложное. Сложное лучше, чем сложное. Плоское лучше, чем вложенное. Разрезанное лучше, чем плотное. Важна читаемость. не достаточно особенные, чтобы нарушать правила. Хотя практичность важнее чистоты. Ошибки никогда не должны проходить незаметно. Если явно не замалчиваются. Перед лицом двусмысленности откажитесь от соблазна угадать. Должен быть один - и желательно только один - очевидный способ сделать это. Хотя сначала этот способ может быть неочевидным, если только вы не гл. Лучше сейчас, чем никогда. Хотя никогда не бывает лучше, чем прямо сейчас. Если реализацию трудно объяснить, это плохая идея. Если реализацию легко объяснить, это может быть хорошей идеей. Пространства имен - одна отличная идея - давайте сделаем их больше!>>>с open (this.__ file__) как f:... print (f.read ()) s = "" "Gur Mra bs Clguba, ol Gvz Crgref Ornhgvshy vf orggre guna htyl. Rkcyvpvg vf orggre guna vzcyvpvg. Fvzcyr Ф. orggre гун pbzcyrk. Pbzcyrk В.Ф. orggre гун pbzcyvpngrq. Синг В.Ф. orggre гуна arfgrq. Fcnefr В.Ф. orggre гун qrafr. Ernqnovyvgl pbhagf. Fcrpvny pnfrf nera'g fcrpvny rabhtu GB oernx гур ehyrf. Nygubhtu cenpgvpnyvgl orngf chevgl. Reebef fubhyq arire cnff fvyragyl. Hayrff rkcyvpvgyl fvyraprq. Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff. Gurer fubhyq или bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg. Nygubhtivhffbgbgbg jnl 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 rnzrng, ngrzragngvba vf rnzlva or. 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) for c in s]))

Кодеки модуля обеспечивают преобразование текста 'rot13'.

>>>импортировать кодеки>>>print (codecs.encode (this.s, 'rot13')) Дзен Python, автор Тим Питерс Красивое лучше уродливого. Явное лучше, чем неявное. Лучше простое, чем сложное. Сложный лучше, чем сложный. Плоский лучше, чем вложенный. Лучше разреженное, чем плотное. Читаемость имеет значение. Особых случаев недостаточно, чтобы нарушать правила. Хотя практичность лучше чистоты. Ошибки никогда не должны проходить незаметно. Если явно не отключен. Перед лицом двусмысленности откажитесь от соблазна угадать. Должен быть один - а желательно только один - очевидный способ сделать это. Хотя сначала этот способ может быть не очевиден, если вы не голландец. Лучше сейчас, чем никогда. Хотя никогда не бывает лучше, чем прямо сейчас. Если реализацию трудно объяснить, это плохая идея. Если реализацию легко объяснить, это может быть хорошей идеей. Пространства имен - одна отличная идея - давайте сделаем их больше!
См. Также
Ссылки
Последняя правка сделана 2021-06-03 04:53:46
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru