Introdução
Neste laboratório, aprenderemos como codificar e decodificar dados Base64 em Java usando a classe java.util.Base64 e a biblioteca Apache Commons.
Criar um novo arquivo Java
Nesta etapa, você criará um novo arquivo Java. Abra o terminal e execute o seguinte comando para criar um novo arquivo Java:
touch ~/project/Base64Encoding.java
Este comando criará um novo arquivo chamado Base64Encoding.java dentro do diretório ~/project. Você pode usar qualquer nome preferido, mas certifique-se de que ele termine com .java.
Codificação e Decodificação Básicas
Nesta etapa, aprenderemos sobre Codificação e Decodificação Básicas.
- O codificador básico usa o Alfabeto Base64 para codificação e decodificação.
- Ele não adicionará nenhum separador de linha à string codificada.
- Usaremos o método
getEncoder()que retorna um simples Base64.Encoder. - Em seguida, usaremos o método
encodeToString()para codificar a string.
Para decodificar uma string codificada, usaremos o Base64.Decoder retornado pelo método getDecoder().
- Usaremos o método
decode()do decodificador.
Use o bloco de código abaixo para codificar e decodificar uma string:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Hello World";
byte[] bytesToEncode = strToEncode.getBytes(); // convert the string to a byte array
// Encoding
String encodedStr = Base64.getEncoder().encodeToString(bytesToEncode);
System.out.println("Encoded String: " + encodedStr);
// Decoding
byte[] decodedByteArr = Base64.getDecoder().decode(encodedStr);
String decodedStr = new String(decodedByteArr);
System.out.println("Decoded String: " + decodedStr);
}
}
Execute o seguinte comando no terminal para compilar e executar o código:
javac Base64Encoding.java && java Base64Encoding
Codificação Base64 sem Padding
Na etapa anterior, vimos que a codificação adiciona caracteres de padding ( = ) no final da string codificada. Nesta etapa, aprenderemos como codificar sem caracteres de padding.
Use o seguinte bloco de código para codificar a string sem padding:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Java";
byte[] bytesToEncode = strToEncode.getBytes(); // convert the string to a byte array
// Encoding without padding
String encodedStr = Base64.getEncoder().withoutPadding().encodeToString(bytesToEncode);
System.out.println("Encoded String: " + encodedStr);
}
}
Execute o seguinte comando no terminal para compilar e executar o código:
javac Base64Encoding.java && java Base64Encoding
Codificação e Decodificação Segura para URLs e Nomes de Arquivos
Nesta etapa, aprenderemos sobre Codificação e Decodificação Seguras para URL e Nome de Arquivo.
A classe Base64 lida com a codificação e decodificação de URL usando o Alfabeto Base64 seguro para URL e Nome de Arquivo.
- Usaremos o método
getUrlEncoder()para obter um codificador Base64 para URL. - Em seguida, usaremos o método
encodeToString()como fizemos na seção anterior.
Da mesma forma, temos um método getUrlDecoder() que retorna um decodificador de URL.
- Podemos usar o método
decode()com este decodificador para decodificação.
Use o bloco de código abaixo para codificar e decodificar uma URL:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String urlToEncode = "https://go.java/?intcmp=gojava-banner-java-com";
// Encoding
String encodedUrl = Base64.getUrlEncoder().encodeToString(urlToEncode.getBytes());
System.out.println("Encoded URL: " + encodedUrl);
// Decoding
byte[] decodedUrlBytes = Base64.getUrlDecoder().decode(encodedUrl);
String decodedUrl = new String(decodedUrlBytes);
System.out.print("Decoded URL: " + decodedUrl);
}
}
Execute o seguinte comando no terminal para compilar e executar o código:
javac Base64Encoding.java && java Base64Encoding
Codificação e Decodificação MIME
Nesta etapa, aprenderemos sobre Codificação e Decodificação MIME.
- A classe Base64 usa o Alfabeto Base64 para suas operações de codificação e decodificação.
- Na saída codificada, cada linha contém um máximo de 76 caracteres.
- Cada linha termina com um retorno de carro ( \r ) seguido por uma alimentação de linha ( \n ) como separador de linha.
Podemos usar os métodos getMimeEncoder() e encodeToString() para a codificação.
Para decodificar, usaremos o método getMimeDecoder() para obter um decodificador e, em seguida, usaremos o método decode().
Use o seguinte bloco de código para codificar e decodificar dados MIME:
import java.util.Base64;
import java.util.UUID;
public class Base64Encoding {
public static void main(String[] args) {
// Creating a MIME input for encoding
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i) {
sb.append(UUID.randomUUID().toString());
}
// Encoding
byte[] bytes = sb.toString().getBytes();
String mimeEncodedStr = Base64.getMimeEncoder().encodeToString(bytes);
System.out.println("Encoded String: " + mimeEncodedStr);
// Decoding
byte[] mimeDecodedBytes = Base64.getMimeDecoder().decode(mimeEncodedStr);
String mimeDecodedStr = new String(mimeDecodedBytes);
}
}
Execute o seguinte comando no terminal para compilar e executar o código:
javac Base64Encoding.java && java Base64Encoding
Utilizando a Biblioteca Apache Commons
Nesta etapa, aprenderemos como usar a biblioteca Apache Commons para codificar e decodificar dados Base64.
A biblioteca Apache Commons fornece uma classe Base64 dentro de seu pacote org.apache.commons.codec.binary.
- Esta classe contém cinco construtores diferentes para diferentes esquemas de codificação.
- Após criar uma instância Base64, podemos usar os métodos
encode()edecode()nos bytes da string para realizar a codificação e decodificação.
Use o seguinte bloco de código para codificar e decodificar uma string usando a classe Base64 da Apache Commons:
import org.apache.commons.codec.binary.Base64;
public class Base64Encoding {
public static void main(String[] args) {
Base64 base64 = new Base64();
// Encoding
String strToEncode = "Hello World";
byte[] encodedBytes = base64.encode(strToEncode.getBytes());
String encodedStr = new String(encodedBytes);
System.out.println("Encoded String: " + encodedStr);
// Decoding
byte[] decodedByteArr = base64.decode(encodedStr.getBytes());
String decodedStr = new String(decodedByteArr);
System.out.println("Decoded String: " + decodedStr);
// Directly access the API by using the static methods encodeBase64() and decodeBase64()
String strToEncode2 = "Hello World";
String encodedStr2 = new String(Base64.encodeBase64(strToEncode.getBytes()));
String decodedStr2 = new String(Base64.decodeBase64(encodedStr.getBytes()));
}
}
Execute o seguinte comando no terminal para compilar e executar o código:
javac -cp commons-codec-1.15.jar Base64Encoding.java && java -cp commons-codec-1.15.jar:. Base64Encoding
Nota: Para executar este código, você precisa baixar e importar o arquivo .jar da biblioteca Apache Commons Codec no classpath. No comando acima, adicionamos -cp commons-codec-1.15.jar para especificar o classpath da biblioteca.
Resumo
Neste laboratório, aprendemos como codificar e decodificar dados Base64 em Java usando a classe java.util.Base64 e a biblioteca Apache Commons. Cobrimos três diferentes esquemas de codificação e decodificação Base64 - Basic, URL e Filename safe, e MIME.



