Tema: Clave
Ver Mensaje Individual
  #10 (permalink)  
Antiguo 01/08/2008, 15:03
yackcae
 
Fecha de Ingreso: junio-2008
Mensajes: 63
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Clave

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
Cita:
que es un archivo .3ds?
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