martes, 27 de marzo de 2007

e3: ¿qué eso de termina() del codificador?

Ocurre que para pasar a base64 se necesita un múltiplo entero de 3 bytes.
Si los datos que pasas a codificar no son un múltiplo entero de 3,
pues el decodificador sólo codifica los grupos de 3 que encuentra
y se guarda el resto para cuando le mandes codificar más
(empezará con los que tiene como restos de la última llamada).

Eso va muy bien mientras hay más bytes que leer,
pero cuando el fichero de entrada se acaba
hay que decirle al codificador que ya no guarde más,
sino que vacie los restos.

Para eso, al acabar, se llama a
String restos= codificador.termina();

... y esos restos hay que cifrarlos y escribirlos en la salida cifrada.

Aunque probablemente no lo necesites conocer en detalle,
si tienes curiosidad por eso del base64
puedes ilustrarte en la wikipedia:

http://en.wikipedia.org/wiki/Base64

para hacer el ejercicio basta con usar las clase del paquete base64.

No hay comentarios: