🔐 Кодировщик и декодировщик ROT13
Преобразуйте текст с помощью самообратимого шифра ROT13 - идеально для скрытия спойлеров и базовой обфускации текста
🎯 Сопоставление алфавита ROT13
ROT13 заменяет каждую букву на букву, стоящую на 13 позиций после нее. Поскольку в алфавите 26 букв, двойное применение ROT13 возвращает исходный текст.
🏛️ Что такое ROT13?
ROT13 ("сдвинуть на 13 позиций") - это частный случай шифра Цезаря с фиксированным сдвигом 13. Он широко используется на онлайн-форумах и в новостных группах для скрытия спойлеров, решений головоломок и концовок шуток.
Простой шифр замены
Каждая буква заменяется другой буквой, отстоящей на 13 позиций в алфавите.
Самообратимый
Примените ROT13 дважды, чтобы вернуть исходный текст - одна и та же операция для кодирования и декодирования.
Сохраняет регистр
Заглавные буквы остаются заглавными, строчные остаются строчными.
Широко поддерживается
Используется на разных платформах, форумах и в текстовых редакторах для быстрой обфускации.
⚙️ Как это работает
Каждая буква заменяется буквой, стоящей на 13 позиций впереди в алфавите. При достижении конца происходит переход к началу:
- A ↔ N, B ↔ O, C ↔ P, и т.д.
- Цифры и символы остаются без изменений (если опция не включена)
- Математическая формула: (x + 13) mod 26
- Один и тот же процесс для кодирования и декодирования
🔐 Безопасность и использование
ROT13 не обеспечивает криптографической безопасности и легко взламывается. Однако он идеально подходит для: and is trivially broken. However, it's perfect for:
🎬 Скрытия спойлеров
Предотвращает случайное прочтение спойлеров к фильмам, книгам или играм на форумах.
📧 Обфускации электронной почты
Скрывает адреса электронной почты от спам-ботов на сайтах.
🎓 Обучения криптографии
Знакомит студентов с базовыми концепциями шифрования.
🎮 Головоломок и игр
Создает простые словесные головоломки и загадки.
❓ Часто задаваемые вопросы
💻 ROT13 на разных языках программирования
Python
import codecs
# Method 1: Using codecs
text = "Hello World"
encoded = codecs.encode(text, 'rot13')
print(encoded) # Output: Uryyb Jbeyq
# Method 2: Manual implementation
def rot13(text):
result = []
for char in text:
if char.isalpha():
offset = 65 if char.isupper() else 97
result.append(chr((ord(char) - offset + 13) % 26 + offset))
else:
result.append(char)
return ''.join(result)
print(rot13("Hello World")) # Output: Uryyb Jbeyq
JavaScript
function rot13(str) {
return str.replace(/[a-zA-Z]/g, function(char) {
const code = char.charCodeAt(0);
const offset = code >= 65 && code <= 90 ? 65 : 97;
return String.fromCharCode((code - offset + 13) % 26 + offset);
});
}
console.log(rot13("Hello World")); // Output: Uryyb Jbeyq
PHP
<?php
// Method 1: Using str_rot13
$text = "Hello World";
$encoded = str_rot13($text);
echo $encoded; // Output: Uryyb Jbeyq
// Method 2: Manual implementation
function rot13_manual($str) {
$result = '';
for ($i = 0; $i < strlen($str); $i++) {
$char = $str[$i];
if (ctype_alpha($char)) {
$offset = ord(ctype_upper($char) ? 'A' : 'a');
$result .= chr((ord($char) - $offset + 13) % 26 + $offset);
} else {
$result .= $char;
}
}
return $result;
}
?>
Java
public class ROT13 {
public static String encode(String text) {
StringBuilder result = new StringBuilder();
for (char c : text.toCharArray()) {
if (Character.isLetter(c)) {
char offset = Character.isUpperCase(c) ? 'A' : 'a';
result.append((char) ((c - offset + 13) % 26 + offset));
} else {
result.append(c);
}
}
return result.toString();
}
public static void main(String[] args) {
System.out.println(encode("Hello World"));
// Output: Uryyb Jbeyq
}
}
C++
#include <iostream>
#include <string>
#include <cctype>
std::string rot13(const std::string& text) {
std::string result;
for (char c : text) {
if (std::isalpha(c)) {
char offset = std::isupper(c) ? 'A' : 'a';
result += (c - offset + 13) % 26 + offset;
} else {
result += c;
}
}
return result;
}
int main() {
std::cout << rot13("Hello World") << std::endl;
// Output: Uryyb Jbeyq
return 0;
}
Командная строка Linux/Unix
# Using tr command
echo "Hello World" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
# Output: Uryyb Jbeyq
# Decode (same command)
echo "Uryyb Jbeyq" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
# Output: Hello World
# Process a file
cat input.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m' > output.txt
📚 Исторический контекст
ROT13 стал популярным в Usenet в 1980-х годах как способ скрыть потенциально оскорбительный контент. Его описывают как "эквивалент Usenet печати ответа вверх ногами".
- Возник в ранней интернет-культуре
- До сих пор используется на современных форумах и досках обсуждений
- Встроен во многие текстовые редакторы (например, Vim)
- Стандарт в утилитах Unix
🔗 Связанные инструменты шифрования
🔄 Шифр Цезаря
Классический шифр сдвига с настраиваемыми значениями сдвига (1-25). Более гибкий, чем ROT13.
🔀 Шифр Атбаш
Древний еврейский шифр, который переворачивает алфавит (A↔Z, B↔Y). Еще один самообратимый метод.
🔐 Шифр Виженера
Полиалфавитный шифр, использующий шифрование на основе ключевого слова для более продвинутой безопасности.
📊 Кодировщик Base64
Преобразует двоичные данные в текстовое представление ASCII для безопасной передачи данных.