Hola mi intención es cargar en una variable de C un fichero binario en Base64 , os cuento mi hazaña y mis frikadas:

imaginemos que tenemos un binario ( un ejecutable , una dll , una imagen , un fichero tipo mp3 , video etc .... ) y quiero matenerlo en mi ejecutable en una variable.

Para eso uso la Base64

es decir abro el fichero en modo binario por ejemplo:

FILE *binario = fopen( "fichero.mp3", "rb");

leo 32 bytes con fread

los encripto en Base64 llamando a una función para ese cometido

desencripto otra vez la cadena

y lo guardo en un fichero en modo binario

ahora escucho el mp3 y no hay problema ( BIEN al menos el algoritmo que uso
para encriptar y desencriptar esta bien ya que encripto el mp3 en B64 lo desencripto y lo guardo
en otro fichero llamado salida.mp3 y se escucha )


SIGAMOS............ ................... ................... ................... ................... ...

el contenido del mp3 lo encripto en base64 quedando algo asi:

UklGRiRwAQBXQVZFZm1 0IBAAAAABAAEARKwAAI hYAQA=AgAQAGRhdGEAcAEAzP2y/Zb9rv3M/Xz9af0Y/n3/0AA=awGYAfABbQKtArwC1AILAzYDRQ

luego lo guardo en un fichero en modo binario llamado encode_mp3

copio el contenido y luego lo pego en una variable de C como sigue aquí:

unsigned char [] = "UklGRiRwAQBXQVZFZm1 0IBAAAAABAAEARKwAAI hYAQA=AgAQAGRhdGEAcAEAzP2y/Zb9rv3M/Xz9af0Y/n3/0AA=awGYAfABbQKtArwC1AILAzYDRQ ................... ............ ";

ahora escribo esta variable desencriptandola y guardo como salida.mp3 y nada el binario queda corrupto. y encima a veces ocupa menos que el mp3 original.

Supongo que es por alguna conversión extraña a ASCII o algo asi......

¿alguna sugerencia ?

¿estoy haciendo algo mal?

¿esto se puede hacer de alguna otra forma ?

¿algun libro , tutorial , website que me de información como hacer esto ?

Un saludo a todos.