🔐 Codificador y Decodificador ROT13
Transforma texto usando el cifrado auto-reversible ROT13 - Perfecto para ocultar spoilers y ofuscación básica de texto
🎯 Mapeo del Alfabeto ROT13
ROT13 reemplaza cada letra con la letra que está 13 posiciones después. Como hay 26 letras, aplicar ROT13 dos veces devuelve el texto original.
🏛️ ¿Qué es ROT13?
ROT13 ("rotar 13 posiciones") es un caso especial del cifrado César con un desplazamiento fijo de 13. Se usa ampliamente en foros en línea y grupos de noticias para ocultar spoilers, soluciones de acertijos y remates de chistes.
Cifrado de sustitución simple
Cada letra es reemplazada por otra letra 13 posiciones más adelante en el alfabeto.
Auto-reversible
Aplica ROT13 dos veces para recuperar el texto original - misma operación para codificar y decodificar.
Conserva mayúsculas/minúsculas
Las letras mayúsculas permanecen mayúsculas, las minúsculas permanecen minúsculas.
Ampliamente soportado
Usado en plataformas, foros y editores de texto para una ofuscación rápida.
⚙️ Cómo Funciona
Cada letra es reemplazada por la letra 13 posiciones adelante en el alfabeto. Al llegar al final, se envuelve al principio:
- A ↔ N, B ↔ O, C ↔ P, etc.
- Los números y símbolos permanecen sin cambios (a menos que se active la opción)
- Fórmula matemática: (x + 13) mod 26
- Mismo proceso para codificar y decodificar
🔐 Seguridad y Uso
ROT13 no ofrece seguridad criptográfica y es trivialmente fácil de romper. Sin embargo, es perfecto para: and is trivially broken. However, it's perfect for:
🎬 Ocultar spoilers
Evita la lectura accidental de spoilers de películas, libros o juegos en foros.
📧 Ofuscación de correo electrónico
Oculta direcciones de correo electrónico de los bots de spam en sitios web.
🎓 Enseñar criptografía
Introduce conceptos básicos de cifrado a los estudiantes.
🎮 Acertijos y juegos
Crea acertijos y adivinanzas de palabras simples.
❓ Preguntas Frecuentes
💻 ROT13 en Diferentes Lenguajes de Programación
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;
}
Línea de Comandos de 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
📚 Contexto Histórico
ROT13 se hizo popular en Usenet en la década de 1980 como una forma de ocultar contenido potencialmente ofensivo. Se describe como el "equivalente de Usenet a imprimir una respuesta al revés".
- Originado en la cultura temprana de internet
- Todavía se usa en foros y tableros de discusión modernos
- Incorporado en muchos editores de texto (como Vim)
- Estándar en las utilidades de Unix
🔗 Herramientas de Cifrado Relacionadas
🔄 Cifrado César
Cifrado por desplazamiento clásico con valores de desplazamiento personalizables (1-25). Más flexible que ROT13.
🔀 Cifrado Atbash
Antiguo cifrado hebreo que invierte el alfabeto (A↔Z, B↔Y). Otro método auto-reversible.
🔐 Cifrado de Vigenère
Cifrado polialfabético que utiliza cifrado basado en palabras clave para una seguridad más avanzada.
📊 Codificador Base64
Convierte datos binarios a una representación de texto ASCII para una transmisión segura de datos.