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 ...





