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í:por ejemplo:
a | b | … | y | z |
97 | 98 | … | 121 | 122 |
#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
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
ResponderEliminarVisiten mi blog subliangel.blogspot.com
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.
EliminarOye disculpa como le hago para que muestre los simbolos y no un recuadro negro ??
ResponderEliminarGracias por la ayuda
pintarlo de blanco
Eliminaroye que buen programa !! gracias! oye tendras el cifrado de polibios!!xfa
ResponderEliminarhola 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??
ResponderEliminarHola oye excelente en c podrias pasarlo a pascal ?? te lo agradeceria mucho
ResponderEliminarEs idea mia, o ambos programas solo codifican, y el descodificador? :/
ResponderEliminarlo que pasa es que tienes retraso mental
Eliminarlk
ResponderEliminardsdsdsdsd
ResponderEliminarhola, como puedo hacer para que me encripte hacia la izquierda?
ResponderEliminar