Codificar, cifrar o resumir: qué tiene delante
Bienvenida
Bienvenido a CTF de criptografía: capas, XOR y claves débiles. Al terminar va a poder mirar un texto raro y decir si está codificado, cifrado o resumido con un hash, quitarle capas de base64 con CyberChef o Python y romper un cifrado XOR casero con un ataque de texto conocido. Es para quien ya usa una terminal o un navegador con soltura; no hace falta saber matemáticas. Necesita CyberChef (la versión descargable funciona sin internet) o Python 3. Son cinco lecciones: esta, una de herramientas, una práctica guiada, el reto de Distribuidora Guayabo y su writeup, más una evaluación de 4 preguntas. En total, unos 50 minutos.
Qué es cripto en un CTF
En una competencia, la categoría crypto casi nunca le pide romper AES. Le pide encontrar el error de alguien que creyó que estaba cifrando: una clave corta que se repite, un "cifrado" que en realidad es base64, una clave que quedó en un comentario. En los CTF de principiantes, casi todos los retos de cripto que he jugado se reducen a pelar capas y a notar dónde se reutilizó algo.
Lo primero que hago con un archivo de este tipo no es abrir una herramienta. Es preguntarme cuál de estas tres cosas tengo delante, porque cada una se ataca distinto y confundirlas es el error que más tiempo me hizo perder al empezar.
| Codificación | Cifrado | Hash | |
|---|---|---|---|
| Para qué sirve | Representar bytes como texto | Que solo lea quien tiene la clave | Comprobar que algo no cambió |
| ¿Usa clave? | No | Sí | No (salvo HMAC) |
| ¿Se revierte? | Siempre, sin secreto | Solo con la clave | No: es de un solo sentido |
| Ejemplos | base64, hex, URL, ROT13 | AES, ChaCha20, el XOR casero | SHA-256, MD5, bcrypt |
ROT13 está en la columna de codificación aunque parezca cifrado: no tiene clave, siempre se corre 13 letras.

Cómo se reconoce cada uno a simple vista
- base64: solo letras, dígitos,
+y/, largo múltiplo de 4, a veces con=o==al final. - hex: solo
0-9ya-f, siempre en pares. - Hash: largo fijo sin importar la entrada. 32 caracteres hex suele ser MD5, 40 es SHA-1, 64 es SHA-256. Un bcrypt empieza con
$2b$. - Cifrado: bytes que parecen ruido, sin palabras ni patrón. Muchas veces viene envuelto en base64 para poder mandarlo por correo, y ahí está la primera capa.
La pista más útil sale del contexto: el nombre del archivo, un script que lo acompaña, una nota. En el reto de esta píldora el programa que "cifra" viene incluido, y leerlo es la mitad del trabajo.
Lo que se aprende de verdad
Fuera del CTF esto es trabajo de auditoría. Cuando reviso una aplicación de una pyme, busco exactamente estos errores: contraseñas guardadas en base64 "para que no se vean", un XOR con clave fija en el código, MD5 sin sal. OWASP los agrupa en la categoría Cryptographic Failures (A02 en la edición 2021). Aprender a romperlos en un reto es la forma más rápida de reconocerlos después en un informe.