Cómo escribir un programa de cifrado de carpetas en lenguaje C
1.
1. El cifrado de carpetas es una función que solo puede realizar el sistema operativo C y no puede manejarla a menos que se llame al comando del sistema.
2. El cifrado utiliza un algoritmo especial para cambiar los datos de la información original, de modo que incluso si los usuarios no autorizados obtienen la información cifrada, aún no pueden entender el contenido de la información porque no saben cómo descifrarlo. Como algoritmos simétricos o cifrado.
3. ¿Qué es el algoritmo XOR? La característica del algoritmo XOR es que el valor original se convierte en el valor original después de dos determinadas operaciones XOR. Por lo tanto, a veces se utiliza para cifrar datos con una clave. par. Cifrar y generar texto cifrado. Una vez que el receptor recibe el texto cifrado, utiliza la clave proporcionada por la parte del cifrado para realizar una operación XOR nuevamente para obtener el texto sin formato.
4. Ejemplo: /* Cifre el archivo en unidades DWORD y escriba cada DWORD en otro archivo usando 0xfcba0000 (clave) como operación XOR*/
# include?lt; stdio.hgt;
#include?lt;stdlib.hgt;
#define?DWORD?unsigned?long
#define?BYTE ?unsigned?char ?
#define?false?
#define?
int?main (int?argc, ?char?*argv[])
{ ARCHIVO?*hFuente; ARCHIVO?*hDestino; DWORD?dwKey=0xfcba0000; char*?pbBuffer; DWORD?dwBufferLen=sizeof(DWORD?dwCount; 0||argv[2]==0) {
printf("¿falta? argumento!\n");
return?false } char*? 1]; char*?szDestination=argv[2]; hSource?=?fopen(szSource, "rb");
hDestination?=?fopen(szDestination, "wb"); //Abrir el archivo de destino if?{printf("open?Source?File?error?!"); ) {?printf("open?Destino?Archivo?error?!") ; return?false?;} //asignar el buffer pbBuffer=(char*?) malloc(dwBufferLen do?{
/?Leer bytes dwBlockLen del archivo fuente
dwCount?=?fread(pbBuffer,?1,?dwBufferLen,?hSource);
//Datos cifrados
dwData?=?*(DWORD*)pbBuffer;?//char*?TO?dword
dwData^=dwKey;//xor?operación
pbBuffer? ?(char?*)? amp;dwData;
//? Escribe datos cifrados en el archivo de destino
fwrite(pbBuffer, ?1, ?dwCount, ?hDestination); ? while(!feof(hSource));
// Cierra el archivo y libera la memoria fclose( hSource(hDestination); " , szSource, szDestination); ¿regresar?;
}