Cifrado ROT-13

Arnold Balasescu

/* El siguiente programa ejecuta el cifrado ROT-13 sobre un texto introducido por teclado. El cifrado oculta un texto sustituyendo cada letra por la letra que está trece posiciones por delante en el alfabeto. No proporciona ninguna seguridad criptográfica sino que se utiliza en los foros de internet para ocultar la solución a un acertijo, un spoiler de una película/historia, o algún texto ofensivo. Dado que el alfabeto tiene 26 letras, se puede usar el mismo codigo para cifrar y descifrar un texto. */

/*
 * =====================================================================================
 *
 *       Filename:  rot13.c
 *
 *    Description:  El programa ejecuta el cifrado ROT13 sobre una cadena de caracteres
 *    		                http://es.wikipedia.org/wiki/ROT13
 *
 *        Version:  1.0
 *        Created:  10/24/2011 3:18:48 AM
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Arnold Balasescu
 *
 * =====================================================================================
 */

#include <stdio.h>

main()
{
  int c;
  while ((c = getchar()) != EOF)                   // End-Of-File corresponde a Ctrl+Z
    if (c < 'A' || ('Z' < c && c < 'a') || c > 'z')  // Si c != A-Z|a-z se queda igual
      {
	putchar(c);
      }
    else
      {
        if ((c < 'a'+13 && c >= 'a') || c < 'A'+13)
	  {
	    putchar(c+13);                             // c esta en la parte inferior del
	  }                                            // alfabeto y sube 13 posiciones
        else
	  {                                            // c esta en la parte superior
            putchar(c-13);                         // y se desplaza 13 posiciones
	  }                                            // hacia abajo
      }
  return 0;
}
Anuncios
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

3 respuestas a Cifrado ROT-13

  1. Observa la corrección: el operador OR es doble barra vertical ( || ).

    • Arnold B. dijo:

      Aunque no era mi intención, parece que si se aplica el operador a nivel de bits OR (bitwise OR) a una expresion booleana cumple la misma funcion que ‘ || ‘.
      Una busqueda en google revela que el operador ‘ || ‘ no evalua el segundo termino si el primero es verdadero (devuelve 1 directamente), mientras que ‘ | ‘ lo hace de todas formas.

  2. Es correcto, pero desde el punto vista sintáctico es más consistente en este caso usar el operador lógico OR ( || ).

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