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.
Marcadores