Dudas con respecto a Base64

Iniciado por final_frontier, 6 Septiembre 2010, 18:55 PM

0 Miembros y 1 Visitante están viendo este tema.

final_frontier

He estado leyendo el tuto de base64 de aquí
http://foro.elhacker.net/tutoriales_documentacion/base_64-t9039.0.html

que dicho sea de paso es clavado al de wikilearnings xD pero está incompleto (o al menos lo creo así), me han surgido un par de dudas:

1.- ¿Cuando se pone el = en una cadena?

2.- En el ejemplo, se ha utilizado (y en todos los que he visto) una cadena de 3 caracteres, da la casualidad de que cuando la longitud de la cadena que introduces es múltiplo/divisor de 3, a la hora de hacer las cuentas para dividir la gran cadena de números binarios en cadenas de 6 es completamente EXACTA, si por ejemplo son 2 letras la cadena que introduces, a la hora de dividir en las subcadenas de 6 caracteres algún hueco queda por ahí, entonces, se rellena con ceros? por la izquierda o por la derecha?

3.- ¿Qué pasa si la cadena tiene espacios de por medio?
Sie ist der hellste Stern von allen und wird nie vom Himmel fallen...

APOKLIPTICO

Te dejo este link con buena info: http://en.wikipedia.org/wiki/Base64

1)El "=" se utiliza como padding, osea, para rellenar cuando no es exacto. Siendo que es base 64, cada 3 bytes de input, salen 4 bytes de output. Si son menos de 3 bytes, se rellenan los bytes restantes con "=".

Cito:
Citar
Input ends with: sure.  Output ends with: c3VyZS4=
Input ends with: sure   Output ends with: c3VyZQ==
Input ends with: sur    Output ends with: c3Vy
Input ends with: su     Output ends with: c3U=

2) Bueno, esto te lo respondí en la 1.

3) Los espacios, son caracteres también en el código ASCII (" " = 32 Ascii). Ergo, se convierten a base 64 tmb. Por ejemplo "   " (tres espacios) se convierten en "ICAg".

Lo bueno del base64, es que sirve para convertir cadenas no legibles en legibles.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.