• +34 685 967 885
  • +34 695 898 191
  • antgarprats@gmail.com
  • Antonio García Prats

algoritmo criptografía cesar

Algoritmo criptográfico Cesar en C

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.

Deja una respuesta

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