Introducción
En este laboratorio, aprenderemos cómo codificar y decodificar datos Base64 en Java utilizando la clase java.util.Base64 y la biblioteca Apache Commons.
Crea un nuevo archivo Java
En este paso, crearás un nuevo archivo Java. Abre la terminal y ejecuta el siguiente comando para crear un nuevo archivo Java:
touch ~/project/Base64Encoding.java
Este comando creará un nuevo archivo llamado Base64Encoding.java dentro del directorio ~/project. Puedes usar cualquier nombre preferido, pero asegúrate de que termine con .java.
Codificación y decodificación básicas
En este paso, aprenderemos sobre la codificación y decodificación básicas.
- El codificador básico utiliza el Alfabeto Base64 para codificar y decodificar.
- No agregará ningún separador de línea a la cadena codificada.
- Usaremos el método
getEncoder()que devuelve un simple Base64.Encoder. - Luego, usaremos el método
encodeToString()para codificar la cadena.
Para decodificar una cadena codificada, usaremos el Base64.Decoder devuelto por el método getDecoder().
- Usaremos el método
decode()del decodificador.
Utiliza el bloque de código siguiente para codificar y decodificar una cadena:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Hello World";
byte[] bytesToEncode = strToEncode.getBytes(); // convertir la cadena a un arreglo de bytes
// Codificación
String encodedStr = Base64.getEncoder().encodeToString(bytesToEncode);
System.out.println("Cadena codificada: " + encodedStr);
// Decodificación
byte[] decodedByteArr = Base64.getDecoder().decode(encodedStr);
String decodedStr = new String(decodedByteArr);
System.out.println("Cadena decodificada: " + decodedStr);
}
}
Ejecuta el siguiente comando en la terminal para compilar y ejecutar el código:
javac Base64Encoding.java && java Base64Encoding
Codificación Base64 sin relleno
En el paso anterior, vimos que la codificación agrega caracteres de relleno (=) al final de la cadena codificada. En este paso, aprenderemos cómo codificar sin caracteres de relleno.
Utiliza el siguiente bloque de código para codificar la cadena sin relleno:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Java";
byte[] bytesToEncode = strToEncode.getBytes(); // convertir la cadena a un arreglo de bytes
// Codificación sin relleno
String encodedStr = Base64.getEncoder().withoutPadding().encodeToString(bytesToEncode);
System.out.println("Cadena codificada: " + encodedStr);
}
}
Ejecuta el siguiente comando en la terminal para compilar y ejecutar el código:
javac Base64Encoding.java && java Base64Encoding
Codificación y decodificación seguras para URL y nombres de archivo
En este paso, aprenderemos sobre la codificación y decodificación seguras para URL y nombres de archivo.
La clase Base64 maneja la codificación y decodificación de URL mediante el uso del Alfabeto Base64 seguro para URL y nombres de archivo.
- Usaremos el método
getUrlEncoder()para obtener un codificador Base64 para URL. - Luego, usaremos el método
encodeToString()como lo hicimos en la sección anterior.
Del mismo modo, tenemos un método getUrlDecoder() que devuelve un decodificador para URL.
- Podemos usar el método
decode()con este decodificador para la decodificación.
Utiliza el bloque de código siguiente para codificar y decodificar una URL:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String urlToEncode = "https://go.java/?intcmp=gojava-banner-java-com";
// Codificación
String encodedUrl = Base64.getUrlEncoder().encodeToString(urlToEncode.getBytes());
System.out.println("URL codificada: " + encodedUrl);
// Decodificación
byte[] decodedUrlBytes = Base64.getUrlDecoder().decode(encodedUrl);
String decodedUrl = new String(decodedUrlBytes);
System.out.print("URL decodificada: " + decodedUrl);
}
}
Ejecuta el siguiente comando en la terminal para compilar y ejecutar el código:
javac Base64Encoding.java && java Base64Encoding
Codificación y decodificación MIME
En este paso, aprenderemos sobre la codificación y decodificación MIME.
- La clase Base64 utiliza el Alfabeto Base64 para sus operaciones de codificación y decodificación.
- En la salida codificada, cada línea contiene un máximo de 76 caracteres.
- Cada línea termina con un retorno de carro (\r) seguido de un salto de línea (\n) como separador de línea.
Podemos usar los métodos getMimeEncoder() y encodeToString() para la codificación.
Para decodificar, usaremos el método getMimeDecoder() para obtener un decodificador y luego usaremos el método decode().
Utiliza el siguiente bloque de código para codificar y decodificar datos MIME:
import java.util.Base64;
import java.util.UUID;
public class Base64Encoding {
public static void main(String[] args) {
// Creando una entrada MIME para codificar
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i) {
sb.append(UUID.randomUUID().toString());
}
// Codificación
byte[] bytes = sb.toString().getBytes();
String mimeEncodedStr = Base64.getMimeEncoder().encodeToString(bytes);
System.out.println("Cadena codificada: " + mimeEncodedStr);
// Decodificación
byte[] mimeDecodedBytes = Base64.getMimeDecoder().decode(mimeEncodedStr);
String mimeDecodedStr = new String(mimeDecodedBytes);
}
}
Ejecuta el siguiente comando en la terminal para compilar y ejecutar el código:
javac Base64Encoding.java && java Base64Encoding
Usando la biblioteca Apache Commons
En este paso, aprenderemos cómo usar la biblioteca Apache Commons para codificar y decodificar datos Base64.
La biblioteca Apache Commons proporciona una clase Base64 dentro de su paquete org.apache.commons.codec.binary.
- Esta clase contiene cinco constructores diferentes para diferentes esquemas de codificación.
- Después de crear una instancia de Base64, podemos usar los métodos
encode()ydecode()en los bytes de la cadena para realizar la codificación y la decodificación.
Utiliza el siguiente bloque de código para codificar y decodificar una cadena utilizando la clase Base64 de Apache Commons:
import org.apache.commons.codec.binary.Base64;
public class Base64Encoding {
public static void main(String[] args) {
Base64 base64 = new Base64();
// Codificación
String strToEncode = "Hello World";
byte[] encodedBytes = base64.encode(strToEncode.getBytes());
String encodedStr = new String(encodedBytes);
System.out.println("Cadena codificada: " + encodedStr);
// Decodificación
byte[] decodedByteArr = base64.decode(encodedStr.getBytes());
String decodedStr = new String(decodedByteArr);
System.out.println("Cadena decodificada: " + decodedStr);
// Acceder directamente a la API utilizando los métodos estáticos encodeBase64() y decodeBase64()
String strToEncode2 = "Hello World";
String encodedStr2 = new String(Base64.encodeBase64(strToEncode.getBytes()));
String decodedStr2 = new String(Base64.decodeBase64(encodedStr.getBytes()));
}
}
Ejecuta el siguiente comando en la terminal para compilar y ejecutar el código:
javac -cp commons-codec-1.15.jar Base64Encoding.java && java -cp commons-codec-1.15.jar:. Base64Encoding
Nota: Para ejecutar este código, debes descargar e importar el archivo .jar de la biblioteca Apache Commons Codec en el classpath. En el comando anterior, agregamos -cp commons-codec-1.15.jar para especificar el classpath de la biblioteca.
Resumen
En este laboratorio, aprendimos cómo codificar y decodificar datos Base64 en Java utilizando la clase java.util.Base64 y la biblioteca Apache Commons. Cubrimos tres diferentes esquemas de codificación y decodificación Base64: Básico, URL y seguro para nombres de archivo, y MIME.



