Algoritmos

Explicación del cifrado César

Este cifrado utiliza un cifrado por sustitución, en donde cada letra es remplazada por otra que se encuentre a N posiciones de distancia. Por poner un ejemplo, si se rota 1 vez, los resultados son:

Cadena original: parzibyte

Cadena rotada: qbsajczuf

La sustitución se hace hacia la derecha. La p se convierte en q, la a en b y así sucesivamente. Para decodificar se rota hacia la izquierda con el mismo número de rotaciones; la q se convierte en p, la b en a y así hasta terminar.

Puedes leer más en la wikipedia, pero en resumen, Julio César lo usaba rotando 3 veces las letras. Se supone que en aquellos tiempos poca gente sabía leer, y la que sabía leer no se imaginaba cómo hacer el criptoanálisis.

Recomendaciones

Está bien que el gran Julio César haya usado este cifrado para comunicarse, pero nunca lo uses si no es por diversión o educación. Este cifrado se puede romper fácilmente, su explicación y uso son simplemente educativos.

Esto es debido a que sólo hay 26 posibles rotaciones. Si tienes un mensaje, puedes primero probar rotando 1 letra, luego 2, y así hasta 26. En una de esas obtendrás un mensaje legible.

Cómo funciona

Primero suponemos que todo el alfabeto son números. Que la a es 1, la b es 2 y así sucesivamente.

Curiosamente el código ASCII está distribuido de tal manera que las letras del alfabeto están juntas. Por ejemplo, la a es 97, la b es 98 y así.

Gracias a eso, podemos sumar las rotaciones y luego restar 97, porque 97 es el inicio del alfabeto. Igualmente pasa con las minúsculas, la A comienza en 65.

Para codificar

Sumamos a las letras el número de rotaciones y listo.

Para decodificar

Ahora restamos el número de rotaciones.

El problema con las últimas letras

Si a la z le sumamos algo, se convierte en otra cosa que no es una letra. Por eso es que debemos resetear nuestro “contador” si llegamos al límite. Esto es fácil gracias a las matemáticas.

Por ejemplo, la z es 26 (en el alfabeto inglés, supongamos que la ñ no existe). Si la rotamos dos veces, obtenemos 28, número que no corresponde a nada en el alfabeto.

Pero ohh, si sacamos el módulo de la suma al ser dividida entre 26, obtenemos esto:

28 % 26 = 2

La letra en la posición 2 es la B, y la rotación está bien sin importar si nos pasamos o no.

También funciona para letras normales que no pasan el límite, por ejemplo, la letra A (que es el 1, y si la rotamos se convierte en 3) funciona así:

3 % 26 = 3

Y en la posición 3 tenemos a C, con una rotación correcta.

Gracias a las matemáticas podemos operar sin complicaciones y sin importar el número de rotaciones.

Lo que no es una letra

Si nos encontramos un espacio, un punto, una coma o cualquier cosa que no sea una letra del alfabeto, entonces la dejamos intacta.

Aplicación en la informática

Lo que tenemos que hacer son esas operaciones con cada letra, y hacerlas a partir de 65 y 97 en caso de que sean mayúsculas o minúsculas respectivamente.

Hay otros detalles, por ejemplo, si el carácter no es una letra, lo mantenemos intacto.

Pronto traeré ejemplos del algoritmo de cifrado César en varios lenguajes de programación.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

17 horas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

1 semana hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

1 semana hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

1 semana hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

1 semana hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

1 semana hace

Esta web usa cookies.