Algoritmo de cifrado César en C

Anteriormente vimos cómo implementar el algoritmo de cifrado de César en Python, ahora veremos cómo cifrar y descifrar una oración usando el cifrado César igualmente, pero en el lenguaje de programación C.

Implementar el algoritmo en C es un poco más complicado que en otros lenguajes, sobre todo por la manipulación de cadenas, pero eso no es un impedimento.

Cifrado César en C

Cifrado César en C

Veamos entonces cómo codificar el algoritmo de cifrado César en C.

Explicación general del algoritmo

Ya vimos cómo funciona el cifrado en términos generales. Ahora explicaré cómo usamos las funciones que provee C para alcanzar los resultados esperados, y cómo va el algoritmo general.

Recorremos la cadena letra por letra. A esa letra la convertimos a su representación entera, le sumamos las rotaciones necesarias y luego la convertimos de nuevo en letra; todo esto usando índices de cadenas y el código ASCII. Para decodificar o descifrar simplemente restamos en lugar de sumar.

Para saber si el carácter es una letra, usamos la función isalpha; porque lo que no sea una letra no lo vamos a procesar. De igual manera, para saber si una letra es mayúscula usamos isupper, lo necesitamos para saber cuál alfabeto usar.

Por otro lado, definimos algunas constantes como el máximo que puede tener la cadena, el código ascii de la a y de la A, la longitud del alfabeto y una función que calcula el módulo de un número y lo regresa de manera positiva.

Como necesitamos a ord, usamos la función equivalente que vimos anteriormente. Otra cosa importante es la iteración de la cadena; usamos un simple while aumentando un contador.

Hablando del ciclo while, si el carácter no es una letra, utilizamos la palabra reservada continue; la cual sirve para saltar a la siguiente iteración y no ejecutar el código que sigue.

Antes de ver el algoritmo: aclaración sobre la lectura de la cadena

El algoritmo como tal, funciona perfectamente. Tal vez sea complicada la parte en donde escaneamos la cadena, pero es porque fgets es mejor que scanf en cuanto a seguridad.

De todas maneras, la función trabaja por sí sola, la manera en la que le mandemos la cadena es cosa nuestra; en mi caso lo pongo de manera interactiva para que el usuario pueda probar fácilmente.

Codificación del algoritmo

Aquí está todo el código, incluye las funciones necesarias para codificar una cadena en C utilizando el método César.

En el método main puse un ejemplo de uso. Espero que sea claro.

Uso de las funciones

Si quieres cifrar, reserva 2 búfers o cadenas del mismo tamaño: una que tiene el mensaje original y otra en donde será puesto el mensaje cifrado.

En caso de que quieras descifrar, igualmente reserva 2 búfers del mismo tamaño. En uno pon el mensaje cifrado, y en el otro se pondrá el mensaje descifrado.

Todo esto, sin importar si cifras o no, está determinado por el número de rotaciones. Recuerda que si, por ejemplo, cifras con 3 rotaciones, debes hacer la operación inversa con el mismo número.

Probar algoritmo de cifrado César online

Aquí dejo un maravilloso replit para que puedas probar cómo se cifra una cadena en C utilizando el método de Julio César sin salir de tu navegador.

Así es como este post llega a su fin.