Este programa lo que hace es habrir un archivo y cambiar cada byte por su byte opuesto (ej: 000-255, 001-254, 002-253, etc.), es muy parecido a mi encriptador de texto, pero para archivos.
Al iniciar el ejecutable escriban void, teniendo la pantalla negra en primer plano. Les pedira que escriban el nombre del archivo que desean encriptar y del archivo encriptado que saldra.
Para desencriptar solo tendran que pasar el archivo otra vez por el encriptador. No es un super-encriptado, pero es relativamente rapido y facil de manejar.
Veran que en una parte del codigo complique las cosas mas de lo normal (la parte en la que lee-encripta-escribe), es para que sea mas rapido, ya que escribe en el disco menos veces.
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<io.h>
void main()
{
bool in=false;
char nda[250]={0};
char ndo[250]={0};
char data[1024];
long int length;
long int used_length;
int left;
long int i=0;
short int h=0;
FILE* archivo;
FILE* st;
while(!in)
{
if(getch()==118)if(getch()==111)if(getch()==105)if(getch()==100) in=true;
}
system("title Toni's Encriptador de Archivos");
printf("Ingrese el nombre del archivo de entrada: ");
gets(nda);
printf("Ingrese el nombre del archivo de salida: ");
gets(ndo);
st = fopen(nda,"r+b");
if(!st)
{
printf("ERROR\n\nNo se pudo abrir el archivo");
getch();
exit(0);
}
archivo = fopen(ndo, "wb");
if(!archivo)
{
printf("ERROR\n\nNo se pudo crear el archivo de salida");
getch();
exit(0);
}
length=filelength(fileno(st));
if(length<1024)
{
for(i=0;i<length;i++)
{
fread(&data,1,1,st);
data[0]=255-data[0];
fwrite(&data,1,1,archivo);
if(i%10==0)printf(".");
}
}
else
{
used_length=length/1024;
for(i=0;i<used_length;i++)
{
fread(&data,1024,1,st);
h=0;
while(h<1024)
{
data[h]=255-data[h];
h++;
}
fwrite(&data,1024,1,archivo);
if(i%1024==0)printf("%ldMB\n", i/1024);
}
if(i%1024==0)printf("%ldMB\n", i/1024);
left=length%1024;
h=0;
fread(&data,left,1,st);
while(h<left)
{
data[h]=255-data[h];
h++;
}
fwrite(&data,left,1,archivo);
}
printf("\n\n\nLISTO!!!");
fclose(st);
fclose(archivo);
getch();
}
Nota: Si alguien sabe como hacer para encriptar carpetas completas, o habrir todos los archivos de una carpeta cullos nombres no se saben que por favor me lo diga.