sábado, 19 de mayo de 2012

Cifrado cesar código c++

Cifrado cesar: es una de las técnicas de codificación más simples y más usadas. Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto.
por ejemplo:
Para codificar y decodificar de una manera fácil en c o c++ hay que conocer que valores tienen las letras en la tabla de códigos ASCII  los valores de las letras minúsculas van de 97 que es la 'a' hasta la 'z' que es la 122 algo así:







a
b
y
z
97
98
121
122


Aquí comenzamos con el codificador:
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>

main()
{
    char texto[50]; 
    int desp=1,tam,aux;
     /*Variables
    texto[50] vector donde se almacena la frase o palabra a codificar
    desp=1  numero de desplazamiento del cifrado Cesar en este caso es 1
    tam Tamaño de la frase o palabra introducida
    aux variable auxiliar para trabajar con los valores numéricos de las letras*/
    cout<<"Indique el texto a codificar"<<endl;
    gets(texto);
    /* gets función que permite almacenar texto 
    en una cadena de caracteres incluyendo el carácter ESPACIO*/
    tam=strlen(texto);
     // strlen () funcion que retorna el tamaño de la palabra ingresada
    // ciclo para recorrer el vector texto[] hasta el tamaño de la frase
    for(int i=0;i<tam;i++)
    {
    //obtenemos el valor de la letra en aux
      aux=texto[i];
       /*comparamos a ver si la suma del valor ascci mas 
       el desplazamiento es mayor que el valor de z*/
      if(aux+desp>122)
      {
         /*si es le restamos el valor z y la 
         diferencia la sumamos al principio 
         del abecedario y almacenamos el nuevo valor*/
         aux=((aux+desp)-122)+96;          
      }
      else
      {
          /*si no solo sumamos el desplazamiento
           y almacenamos el nuevo valor*/
          aux=aux+desp;
      } 
      /* condición para no hacer nada si el carácter es un ESPACIO*/
      if(texto[i]!=' ')
      {
         //codificamos la letra 
         texto[i]=aux;             
      }          
    }
    //mostramos la palabra codificada
    cout<<"Texto codificado a: "<<texto<<endl;  
    getch();//detenemos la pantalla y listo
    }
Y ahora con el de-codificador:
#include<conio.h>
#include<stdio.h>
#include<string.h>

main()
{
    char texto[50]; 
    int desp=1,tam,aux;
    /*Variables
    texto[50] vector donde se almacena la frase o palabra a codificar
    desp=1  numero de desplazamiento del cifrado Cesar en este caso es 1
    tam Tamaño de la frase o palabra introducida
    aux variable auxiliar para trabajar con los valores numéricos de las letras*/
    cout<<"Indique el texto a descodificar"<<endl;
    gets(texto);
    /* gets función que permite almacenar texto 
    en una cadena de caracteres incluyendo el carácter ESPACIO*/
    tam=strlen(texto); // strlen () función que retorna el tamaño de la palabra ingresada
    // ciclo para recorrer el vector texto[] hasta el tamaño de la frase
    for(int i=0;i<tam;i++) 
    {
      //obtenemos el valor de la letra en aux
      aux=texto[i];
      //comparamos a ver si la resta del valor ascci es menor que a
      if(aux-desp<97) 
      {
         /*si es calculamos el valor de la letra codificada retando la diferencia a z*/
         aux=122-(96-(aux-desp));          
      }
      else
      {
          /*si no solo restamos el desplazamiento
           y almacenamos el nuevo valor*/
          aux=aux-desp;
      } 
       /* condición para no hacer nada si el carácter es un ESPACIO*/
      if(texto[i]!=' ')
      {
         //codificamos la letra 
         texto[i]=aux;             
      }        
    }
      //mostramos la palabra codificada
    cout<<"Texto codificado a: "<<texto<<endl;  
    getch();//detenemos la pantalla y listo
    }
Acá les dejo los archivos y ejecutables, cualquier duda o aporte comenten

Descargar Aquí

12 comentarios:

  1. interesante, chicos no olviden colocar de donde salen las funciones que se usan, los mas novatos no saben de donde salen y se complican todo, sigan asi
    Visiten mi blog subliangel.blogspot.com

    ResponderEliminar
    Respuestas
    1. Gracias, intentamos explicar todo lo mas detallado posible, quizás a veces se nos pase algo pero si es el caso siempre estaremos aquí para corregir y seguir adelante. Gracias por seguirnos Luis.

      Eliminar
  2. Oye disculpa como le hago para que muestre los simbolos y no un recuadro negro ??
    Gracias por la ayuda

    ResponderEliminar
  3. oye que buen programa !! gracias! oye tendras el cifrado de polibios!!xfa

    ResponderEliminar
  4. hola muy bueno el programa y sobre todo la explicacion, yo necesitaria para el colegio hacer un programa sobre el cifrado de cesar pero le tengo que incluir class me podrias dar una mano??

    ResponderEliminar
  5. Hola oye excelente en c podrias pasarlo a pascal ?? te lo agradeceria mucho

    ResponderEliminar
  6. Es idea mia, o ambos programas solo codifican, y el descodificador? :/

    ResponderEliminar
    Respuestas
    1. lo que pasa es que tienes retraso mental

      Eliminar
  7. hola, como puedo hacer para que me encripte hacia la izquierda?

    ResponderEliminar