Hoy os traigo un ejemplo del código en C para implementar el algoritmo criptográfico Cesar en C. El cifrado César es una técnica de encriptación simple donde cada letra de un texto se reemplaza por otra que se encuentra un número fijo de posiciones adelante en el alfabeto.
Historia del algoritmo criptográfico Cesar
El algoritmo de cifrado César, también conocido como cifrado por desplazamiento, es uno de los métodos de criptografía más antiguos y simples, atribuido a Julio César. Este esquema de cifrado pertenece a la categoría de cifrados por sustitución, donde cada letra del mensaje original es reemplazada por otra que se encuentra un número fijo de posiciones más adelante (o atrás) en el alfabeto.
Matemática del algoritmo criptográfico Cesar
El funcionamiento básico del cifrado César implica elegir una clave, que es el número de posiciones de desplazamiento. Por ejemplo, con una clave de 3, la letra «A» se convierte en «D», «B» en «E», y así sucesivamente. Al llegar al final del alfabeto, el desplazamiento continúa de manera cíclica (por ejemplo, «X» con clave 3 se convierte en «A»).
La fórmula matemática para cifrar una letra es: C=(P+k)mod nC = (P + k) \mod n
Donde:
- C es la letra cifrada.
- P es la posición de la letra original.
- k es la clave de desplazamiento.
- n es el tamaño del alfabeto.
El descifrado invierte el proceso: P=(C−k)mod n
Aunque el algoritmo criptográfico Cesar es fácil de implementar, su seguridad es mínima. Con solo 25 posibles claves en un alfabeto inglés, un ataque de fuerza bruta es trivial. A pesar de su debilidad, el algoritmo es relevante históricamente y sirve como base para comprender sistemas de cifrado más avanzados.
#include <stdio.h>
#include <cs50.h> // O usa stdlib.h si no tienes cs50
#include <string.h>
#include <ctype.h>
// Función para cifrar el texto usando el cifrado César
string cesar(string texto, int clave);
int main(void)
{
// Solicitar al usuario el texto a cifrar
string texto = get_string("Texto: ");
// Solicitar al usuario la clave para el cifrado
int clave = get_int("Clave: ");
// Cifrar el texto
string texto_cifrado = cesar(texto, clave);
// Mostrar el texto cifrado
printf("Texto cifrado: %s\n", texto_cifrado);
return 0;
}
string cesar(string texto, int clave)
{
int longitud = strlen(texto);
// Recorrer cada carácter del texto
for (int i = 0; i < longitud; i++)
{
// Comprobar si es una letra mayúscula
if (isupper(texto[i]))
{
// Aplicar la clave de cifrado a las mayúsculas
texto[i] = ((texto[i] - 'A') + clave) % 26 + 'A';
}
// Comprobar si es una letra minúscula
else if (islower(texto[i]))
{
// Aplicar la clave de cifrado a las minúsculas
texto[i] = ((texto[i] - 'a') + clave) % 26 + 'a';
}
// Si no es una letra, no se modifica
}
return texto;
}
Explicación del algoritmo de criptografía Cesar en C:
Entrada del usuario:
- Se solicita al usuario que ingrese el texto que desea cifrar.
- Se le pide también una clave (número) que definirá el desplazamiento en el cifrado.
Función cesar
:
La función toma el texto y la clave como parámetros.
Recorre cada carácter del texto, comprobando si es una letra mayúscula o minúscula.
Si es una letra, se le aplica el cifrado César, que consiste en desplazar la letra según la clave. El uso de % 26
asegura que el valor de desplazamiento se mantenga dentro del alfabeto.
Si el carácter no es una letra, se deja sin cambios.
Resultado: El programa imprime el texto cifrado con la clave proporcionada.
Este es un programa simple y efectivo para demostrar cómo funciona el cifrado César en C.