Base64 es realmente muy simple. Tampoco es un algoritmo de cifrado, por lo que esta pregunta probablemente se adapte mejor al desbordamiento de pila.
La idea detrás de Base64 es que desea poder tomar cualquier dato binario y convertirlo en algo que pueda tratarse como texto ASCII (es decir, letras, números y algunos caracteres especiales). Por supuesto, los datos binarios tienen 256 valores posibles por byte, pero para llegar a una representación textual, debe reducirlos a no más de unos 80 o menos valores posibles. Dado que 64 es una potencia de dos, se eligió.
64 valores es el equivalente a seis bits. En consecuencia, cada tres bytes (24 bits) en el binario original se traduce en cuatro bytes en Base64 (también 24 bits, como cuatro grupos de seis).
El algoritmo es simplemente:
- toma el binario original.
- dividir en grupos de tres bytes
- trata los tres bytes como grupos de 24 bits.
- divida estos 24 bits en cuatro grupos de seis bits.
- busque la letra correspondiente para cada grupo de seis bits. Esta es tu salida.
Puede encontrar la tabla de traducción en toda la Web, por ejemplo aquí: enlace
Hay un caso especial: al final de los datos binarios, es posible que le queden uno o dos bytes. Es por eso que a veces verás = signos al final; indican el relleno.
Con eso en mente, tu texto original realmente no se parece a Base64. Podría ser, pero no parece plausible. Las largas cadenas de 0 son un obsequio. Invirtiendo el algoritmo anterior, cada 0 representa el número 52 (consultado en la tabla), o 110100 en binario. Por lo tanto, la secuencia 0000 correspondería al patrón de bits 110100110100110100110100. Divida eso a lo largo de los límites de ocho bits para obtener el binario original, y obtendrá esto:
11010011 01001101 00110100 o en hexadecimal D34D34
En los datos, ver cadenas largas de valores cero es mucho más plausible que las cadenas largas de D34D34. Aún menos plausible, los datos comienzan con once 0: si realmente se tratara de una larga cadena de datos, uno esperaría múltiplos de cuatro.