Puedes usar el método de XOR pero aplicado a archivos binarios, desencriptando el archivo a un archivo temporal, claro que en ese punto se puede ver el archivo, o bien desencriptarlo en la memoria y después usarlo desde ahí, todo depende del código de tu programa.
Te dejo una función para encriptar/desencriptar archivos binarios, o lo que sea, usando XOR:
Código:
void encriptar(char *origen, char *destino, char *clave)
{
FILE *archivo_origen;
FILE *archivo_destino;
char data[128];
int pos_clave=0; // Posición en la clave
int longitud_clave;
int longitud_data;
longitud_clave=strlen(clave);
archivo_origen=fopen(origen, "rb");
archivo_destino=fopen(destino, "wb");
do {
longitud_data=fread(&data, sizeof(char), sizeof(data), archivo_origen);
for(int N=0; N<longitud_data; N++) {
data[N]^=clave[pos_clave];
pos_clave++; if(pos_clave==longitud_clave) pos_clave=0;
}
fwrite(&data, sizeof(char), longitud_data, archivo_destino);
} while(longitud_data==sizeof(data));
fflush(archivo_origen);
fclose(archivo_origen);
fflush(archivo_destino);
fclose(archivo_destino);
}
int main()
{
// Para encriptar solo se llama a la función
encriptar("archivo.3ds", "encriptado.dat", "1234");
// Para desencriptar se llama a la misma función pero que lea el archivo encriptado
encriptar("encriptado.dat", "desencriptado.3ds", "1234");
return 0;
}
@Fayca
Es un formato creado para 3D Studio Max, se usa para guardar objetos tridimensionales.
En Wikipedia: http://es.wikipedia.org/wiki/3D_Studio_Max
Ejemplo: http://www.the3dstudio.com/product_details.aspx?id_product=37948