Saltar al contenido

Decodificar datos Base64 en Java

Hemos estado investigando en todo internet para regalarte la respuesta a tu dilema, si tienes alguna inquietud puedes dejarnos tu inquietud y te responderemos con gusto.

Solución:

A partir de la v6, Java SE se envía con JAXB. javax.xml.bind.DatatypeConverter posee static métodos que facilitan esto. Ver parseBase64Binary() y printBase64Binary().

A partir de Java 8, existe una API con soporte oficial para la codificación y decodificación Base64. Con el tiempo, esta probablemente se convertirá en la opción predeterminada.

La API incluye la clase java.util.Base64 y sus clases anidadas. Admite tres sabores diferentes: básico, seguro para URL y MIME.

Código de muestra con la codificación “básica”:

import java.util.Base64;

byte[] bytes = "Hello, World!".getBytes("UTF-8");
String encoded = Base64.getEncoder().encodeToString(bytes);
byte[] decoded = Base64.getDecoder().decode(encoded);

La documentación para java.util.Base64 incluye varios métodos más para configurar codificadores y decodificadores, y para usar diferentes clases como entradas y salidas (matrices de bytes, cadenas, ByteBuffers, flujos java.io).

No es necesario utilizar recursos comunes: Sun envía un codificador base64 con Java. Puede importarlo como tal:

import sun.misc.BASE64Decoder;

Y luego úsalo así:

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(encodedBytes);

Donde encodedBytes es un java.lang.String o un java.io.InputStream. Solo ten cuidado de que el sun.* las clases no son “oficialmente respaldadas” por Sun.

EDITAR: ¿Quién diría que esta sería la respuesta más controvertida que publicaría? Sé que los paquetes sun. * No son compatibles o no se garantiza que continúen existiendo, y sé acerca de Commons y lo uso todo el tiempo. Sin embargo, el cartel pedía una clase que estuviera “incluida con Sun Java 6”, y eso es lo que estaba tratando de responder. Estoy de acuerdo en que Commons es el mejor camino a seguir en general.

EDITAR 2: Como señala amir75 a continuación, Java 6+ se envía con JAXB, que contiene código compatible para codificar / decodificar Base64. Consulte la respuesta de Jeremy Ross a continuación.

Te mostramos las comentarios y valoraciones de los lectores

No se te olvide mostrar este tutorial si si solucionó tu problema.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *