Cifrado polialfabético en C
#include <stdio.h> #include <stdlib.h> #include <string.h> void cifrar (char *archivo, char *llave); void descifrar (char *archivo, char *clave); void llamarcifrar (void); int main (void) { int longitud = 0; char *llave = NULL; char *archivo = NULL; char opcion = ' '; archivo = (char *) malloc (sizeof (char) * 12); printf ("Que deseas hacer Cifrar o Descrifrar: "); scanf ("%c", &opcion); if (opcion == 'C') { printf ("Introduce el tama;o de tu clave: "); scanf ("%d", &longitud); llave = (char *) malloc (sizeof (char) * longitud); if (longitud > 0) { printf ("Introduce tu clave: "); scanf ("%s", llave); if (strlen (llave) > 0) { printf ("Nombre del archivo a cifrar: "); scanf ("%s", archivo); cifrar (archivo, llave); } else printf ("Necesitas una clave"); } } else { printf ("Nombre del archivo a descifrar: "); scanf ("%s", archivo); printf ("Introduce el tama;o de tu clave: "); scanf ("%d", &longitud); llave = (char *) malloc (sizeof (char) * longitud); printf ("Introduce la llave: "); scanf ("%s", llave); descifrar (archivo, llave); } /* free(llave); free(archivo); */ return 0; } void descifrar (char *archivo, char *llave) { int longitud = 0; longitud = strlen (llave); FILE *origen; int apuntador = -1; unsigned char c, aux; origen = fopen (archivo, "r"); if (origen == NULL) { printf ("Error al abrir el archivo"); } else { while (!feof (origen)) { apuntador++; c = fgetc (origen); if (apuntador >= longitud) apuntador = 0; aux = c - llave[apuntador]; if (aux != '›' && aux < 255) printf ("%c", aux); } apuntador = 0; } fclose (origen); } void cifrar (char *archivo, char *clave) { int longitud = 0; longitud = strlen (clave); FILE *origen, *destino; int apuntador = 0, aux; unsigned char c; origen = fopen (archivo, "r"); if (origen == NULL) { printf ("Error al abrir el archivo"); } else { destino = fopen ("salida.cfr", "w"); while (!feof (origen)) { if (apuntador == longitud) apuntador = 0; c = fgetc (origen); aux = (clave[apuntador] + c); if (aux > 255) fputc (aux % 255, destino); else fputc (aux, destino); apuntador++; } fclose (destino); } fclose (origen); printf ("Cifrado completo"); }
Quizá te interese :
#include #include char bufer[500]; typedef struct swav { char Riff[4]; long longRi ...
#include "stdio.h" #include "conio.h" #include "string.h" #include "math.h" #include "stdl ...
#include #include #include #include #include #include #include #include char ...









que tal queria preguntarte acerca de este programa en cuanto a su funcionamiento, ya que no soy un programador ni nada parecido, ya lo corri pero lo que pasa es que siempre me dice al final que error al abrir el archivo no se la verdad que colocar cuando me pide la llave, el nombre del archivo en si que es?, y el tamaño de la clave agradeceria bastante si me lo explicases porfavor. de ante mano gracias.
Hola!
El cifrado polialfabético http://www.dma.fi.upm.es/java/matematicadiscreta/aritmeticamodular/polialfabeto.html te puede aclarar los detalles, esta es una implementación mínima (y muy elemental siguiendo el concepto base, que es tomar series diferentes para cada letra).
Saludos.
ola que tal quisiera saber si no tendras un codijo en c++ que sea un encriptador donde te pida el texto que quieres encriptar las tramas y el corrimiento y que lo encripte por fa ayudame es para un examen