C – ROT13

Hola Mundo
Ubyn Zhaqb
Hola Mundo

/**
 * \brief Ejemplo de la implementación del cifrado ROT13 en C.
 *
 * Compilar:
 *     gcc rot13.c -o rot13
 *
 * \file rot13.c
 *
 * \author Dark[byte]
 */

#include <stdio.h>
void rot13(char*);        //declaración de la función rot13()

char cadena[] = { 'H', 'o', 'l', 'a', ' ', 'M', 'u', 'n', 'd', 'o', '\n', '\r', '\0' };        //cadena de caracteres terminada en \0

/**
 * Punto de entrada del programa.
 * 
 * \return 0 
 */
int main()
{
        printf(cadena);        //imprime la cadena en pantalla

        rot13(cadena);         //cifra la cadena

        printf(cadena);        //imprime la cadena en pantalla

        rot13(cadena);         //descifra la cadena

        printf(cadena);        //imprime la cadena en pantalla

        return 0;
}

/**
 * Cifra o Descifra una cadena de caracteres en ROT13.
 *
 * \param cadena puntero hacia la cadena de caracteres.
 */
void rot13(char *cadena)
{
        int c;
        int i = 0;                         //valor de la posición actual en la cadena
        while (cadena[i] != '\0') {        //comienza el bucle para analizar los caracteres de la cadena[] hasta llegar a \0
                c = cadena[i];              //introduce el carácter de la posición actual de la cadena en la variable c

                if (c >= 'A' && c < 'N') {                //compara c con A y N
                        cadena[i] = c + 13;               //si es igual o mayor que A y menor que N, se realiza un desplazamiento sumándole 13
                } else if (c >= 'N' && c <= 'Z') {        //compara c con N y Z
                        cadena[i] = c - 13;               //si es igual o mayor que N e igual o menor que Z, se realiza un desplazamiento restándole 13
                } else if (c >= 'a' && c < 'n') {         //compara c con a y n
                        cadena[i] = c + 13;               //si es igual o mayor que a y menor que n, se realiza un desplazamiento sumándole 13
                } else if (c >= 'n' && c <= 'z') {        //compara c con n y z
                        cadena[i] = c - 13;               //si es igual o mayor que n e igual o menor que z, se realiza un desplazamiento restándole 13
                }

                i++;        //incrementa la variable i en uno para poder analizar el siguiente carácter
        }
}

,

  1. Deja un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: