Código
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(){
char abecedario[] = "abcdefghijklmnopqrstuvwxyz"; //arreglo a-z
char clave[]="pacopacopacopaco"; //palabra clave, se repite varias veces para que se acople al texto original
char texto[30]; //palabras a cifrar, el usuario la proporcionará.
int valor; //variable auxiliar
char Salida; //variable para salida
printf("\nBienvenido a Cripteame. Este es un programa que cifra una palabra que tu\nproporciones con una clave que ya esta en el sitema\nPor favor, presiona Enter para continuar\n";
getch();//Damos la bienvenida al programa
do{//iniciamos in ciclo do-while que permite seguir cifrando palabras
printf("\n\n\tDame el mensaje en claro, en minusculas y sin espacios,\n\tdespués, presiona Enter para continuar ";
gets(texto);//con gets, guardamos la cadena de caracteres
getch();
printf("\n\tEl cifrado es: ";
for(int ix = 0, iy = 0; ix < strlen(texto); ix++) //se inicia el ciclo de cifrado, con strlen se calcula el numero de caracteres
{
for(int ix2 = 0 ; ix2 < 26; ix2++)
{
if( abecedario[ix2] == clave[iy] ) // aqui encontramos la posicion de la fila respecto a la letra de la clave "paco"
{
for(int px = 0; px < 26; px++)
{
if(abecedario[px] == texto[iy])
{
valor = (int) abecedario[ix2]; //transformamos el valor de letra a entero con la variable extra
for(int px2 = 0; px2 <= px; px2++)
{
if(valor > 122) //segun el código ascii, a=97, z=122 por lo tanto, si el valor es menor de 122, se empieza de nuevo en la linea de abajo
valor = 97; //empezamos de nuevo con a=97
valor++;
}
printf("%c",(char) valor-1); //transformamos el entero a caracter y le restamos 1, si lo dejamos sin restar, el se considerara una fila despues, por eso se le resta uno, si queremos criptar b, y no restamos, se considerara la c, no la b
}
}
++iy;
}
}
}
printf("\n");
printf("\nAhora te presentamos la tabla de Vigenere: \n");
printf("\nA B C D E F G H I J K L M N O P Q R S T U V W X Y Z\nB C D E F G H I J K L M N O P Q R S T U V W X Y Z A");
printf("\nC D E F G H I J K L M N O P Q R S T U V W X Y Z A B\nD E F G H I J K L M N O P Q R S T U V W X Y Z A B C");
printf("\nF G H I J K L M N O P Q R S T U V W X Y Z A B C D E\nG H I J K L M N O P Q R S T U V W X Y Z A B C D E F");
printf("\nH I J K L M N O P Q R S T U V W X Y Z A B C D E F G\nI J K L M N O P Q R S T U V W X Y Z A B C D E F G H");
printf("\nJ K L M N O P Q R S T U V W X Y Z A B C D E F G H I\nK L M N O P Q R S T U V W X Y Z A B C D E F G H I J");
printf("\nL M N O P Q R S T U V W X Y Z A B C D E F G H I J K\nM N O P Q R S T U V W X Y Z A B C D E F G H I J K L");
printf("\nN O P Q R S T U V W X Y Z A B C D E F G H I J K L M\nO P Q R S T U V W X Y Z A B C D E F G H I J K L M N");
printf("\nP Q R S T U V W X Y Z A B C D E F G H I J K L M N O\nQ R S T U V W X Y Z A B C D E F G H I J K L M N O P");
printf("\nR S T U V W X Y Z A B C D E F G H I J K L M N O P Q\nS T U V W X Y Z A B C D E F G H I J K L M N O P Q R");
printf("\nT U V W X Y Z A B C D E F G H I J K L M N O P Q R S\nU V W X Y Z A B C D E F G H I J K L M N O P Q R S T");
printf("\nV W X Y Z A B C D E F G H I J K L M N O P Q R S T U\nW X Y Z A B C D E F G H I J K L M N O P Q R S T U V");
printf("\nX Y Z A B C D E F G H I J K L M N O P Q R S T U V W\nY Z A B C D E F G H I J K L M N O P Q R S T U V W X");
printf("\nZ A B C D E F G H I J K L M N O P Q R S T U V W X Y\n");
printf("\n\n\tQuieres salir N/S?: ");//aqui el usuario puede decidir si quiere salir o no
Salida=_getche();
}while(Salida=='n'||Salida=='N');
}
Cópienlo en su compilador tal cual y córranlo, verán que puede cifrar perfectamente. Está compilado en dev c++. Tal vez no es el código más efecitvo, pero pues después de mucho buscar, logré hacer eso. El código tiene algunos comentarios de lo que se supone va haciendo el programa. Les agradeceré muchísimo su ayuda!
Gracias de nuevo!










Autor


En línea




