Red de conocimiento informático - Material del sitio web - ¿Cómo cifrar y descifrar archivos en C?

¿Cómo cifrar y descifrar archivos en C?

Para aquellos con requisitos de cifrado bajos, pueden definir sus propias reglas de cifrado. Este método de cifrado es muy simple y gratuito. Por ejemplo, puede agregar un número a cada carácter del archivo al guardarlo y luego restar cada carácter de ese número en consecuencia al leer el archivo. haciendo que los archivos que almacena se vean desordenados. Es solo que esas reglas son demasiado simples. Puede establecer sus propias reglas y controlar el cifrado y descifrado.

El siguiente programa utiliza operaciones OR igual para cifrar y descifrar archivos

/****************** Ideas de diseño ** ****************/

//Según la contraseña de cifrado/clasificación ingresada por el usuario,

//Obtener el original archivo cada vez y contraseña y una cadena de la misma longitud que la contraseña.

// Los elementos correspondientes de cifrado/descifrado son diferentes o

// Además, debido a que los métodos o son diferentes, los procedimientos de cifrado y descifrado son los mismos

/ / En otras palabras, el archivo se descifra según el mismo método de cifrado

#include

#include < string.h>

#include <.string.h>

#include

#include

#include

char filename[256]; // archivo original

char contraseña[256] // contraseña de cifrado/descifrado

const char; filenametemp[] = " temp15435255435325432543.temp"; // Cifrar/descifrar archivos intermedios

void inputpass(char *pass); // La entrada de contraseña se muestra como "******"

void main () {

ARCHIVO *fp; // Cifrar/descifrar archivo

ARCHIVO *fptemp // Archivo temporal durante el proceso de cifrado/descifrado

int pwdlen./ / Longitud de la contraseña

int i = 0; // Contador

char ch = 0 // Caracteres a leer

printf("Ingrese el nombre del archivo cifrado/descifrado (nombre de ruta completo):\n");

gets(nombre del archivo);

if( (fp = fopen( nombre del archivo, "rb")) == NULL) {

printf("Archivo %s\n", nombre de archivo);

exit(1);

} // if

printf("Ingrese la contraseña a cifrar/descifrar: \n");

inputpass(contraseña);

pwdlen = strlen (contraseña);

if(pwdlen == 0) {

printf("La contraseña no puede ser nula, falló el cifrado/descifrado \n");

salir(1 );

}.

// if

printf("La contraseña no puede ser nula, el cifrado/descifrado falló \n");

exit(1);

}/ / if

fptemp = fopen(filenametemp, "wb"); // Abre el archivo intermedio

while(1) {

ch = fgetc(fp ) ;// Leer un carácter del archivo original

if(feof(fp)){ // Se ha leído el final del archivo

break // Salir del bucle;

}

ch ^= contraseña[i++]; // Ejecutar operación XOR en caracteres y contraseña originales

fputc(ch, fptemp); Operación XOR en caracteres originales y contraseña El resultado se escribe en el archivo intermedio

if(i == pwdlen) { // Hace que el archivo original realice una operación XOR de longitud fija en cada carácter de la misma longitud como contraseña

if (fp) { // Haga XOR del archivo original cada carácter de la misma longitud que la contraseña

Permutación de longitud fija de la misma longitud que la contraseña

i = 0;

p>

}

}// while

fclose(fp); // Cerrar el archivo original

fclose(fptemp); // Cerrar el archivo del medio

remove( filename); // Eliminar el archivo original

rename(filenametemp, filename); / Cambie el nombre del archivo intermedio al archivo original

printf ("Cifrado/descifrado exitoso\n"); // Cifrado/descifrado exitoso hasta ahora

}

//La contraseña se muestra en formato "*". *****" pantalla

void inputpass(char *pass) {

int i = 0;

char c;

while(isprint(c = getch())){

pasar[i++] = c;

// printf("*");

}

pasar[i] = '\0';

printf("\n");

}