Espacio publicitario (banner)
AD

¿Ya dominas lo básico? Un curso estructurado de Python es la vía rápida para dar el salto.

Ver cursos de Python en Udemy

Enlace de afiliado. No te cuesta nada extra.

🐍Lecciones de Python
Lección 35 / 69

Construir un cifrado César (desplazar letras)

En esta lección implementarás el cifrado César, un cifrado clásico, como práctica de manipulación de cadenas con códigos de carácter. Está pensada para quien busca «cifrado en Python» o «ord y chr en Python».

El cifrado César es un cifrado sencillo, que se remonta a la antigua Roma, en el que cada letra se sustituye desplazándola un número fijo de posiciones en el alfabeto. Piensa en ese juego de la infancia de correr el abecedario unas letras para hablar «en clave». Se implementa convirtiendo un carácter en número (su código) con ord(), haciendo la aritmética sobre ese número y volviendo a convertirlo en carácter con chr().

El código de ejemplo usa .isalpha() para comprobar si un carácter es una letra y solo desplaza el código en ese caso. El detalle clave es el % 26, que mantiene el resultado dentro del rango de 26 letras e implementa la «vuelta al principio» por la que la Z regresa a la A. Los caracteres que no son letras (espacios, signos de puntuación) pasan sin cambios.

Es sencillo y fácil de romper comparado con la criptografía moderna, pero resulta un tema introductorio muy accesible para practicar la operación básica de hacer cuentas con códigos de carácter. Lo que más suele confundir al empezar es que las mayúsculas y las minúsculas tienen códigos base distintos: tratar ambas exige un poco de cuidado adicional.

Como puerta de entrada a la criptografía moderna, merece la pena experimentar el mecanismo de primera mano. La idea de «tratar un carácter como un número y operar con él» es también la base para aprender después técnicas criptográficas más avanzadas.

Python
SALIDA

💡 El motor de Python puede tardar unos segundos en cargarse la primera vez que ejecutas código.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)