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.

¿Encontraste lo que buscabas?

Si es así, suscríbete para que estés enterado de mis nuevos posts sobre programación e informática

Estoy interesado en trabajar contigo de manera remota para llevar tu idea a la realidad, formar parte de tu equipo de desarrolladores, ayudarte con tu tarea, dar asesorías y todo lo relacionado con tecnología y programación. Contáctame para más información
No te vayas sin seguirme en Twitter, Facebook y GitHub
Si tienes dudas déjalas en un comentario, pero asegúrate de seguirme antes como agradecimiento (no te cuesta nada y me ayudas mucho)

Si el contenido es de tu agrado, sígueme

parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB. Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron. Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scripts La plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C. Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

2 Comments

Algoritmo de cifrado César en Ruby - Parzibyte's blog · febrero 15, 2019 a las 5:00 am

[…] vimos el cifrado César en C y el cifrado César en Python. No explicaré detalladamente cómo funciona el algoritmo pues a ello […]

Cifrado césar en Java - Algoritmo - Parzibyte's blog · mayo 23, 2019 a las 3:00 am

[…] también he codificado este algoritmo en C, Ruby y […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Share via
A %d blogueros les gusta esto: