Introduction
Dans ce laboratoire, nous allons apprendre à encoder et à décoder des données Base64 en Java à l'aide de la classe java.util.Base64
et de la bibliothèque Apache Commons.
💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici
Dans ce laboratoire, nous allons apprendre à encoder et à décoder des données Base64 en Java à l'aide de la classe java.util.Base64
et de la bibliothèque Apache Commons.
Dans cette étape, vous allez créer un nouveau fichier Java. Ouvrez le terminal et exécutez la commande suivante pour créer un nouveau fichier Java :
touch ~/project/Base64Encoding.java
Cette commande créera un nouveau fichier nommé Base64Encoding.java
dans le répertoire ~/project
. Vous pouvez utiliser n'importe quel nom que vous préférez, mais assurez-vous qu'il se termine par .java
.
Dans cette étape, nous allons apprendre à encoder et à décoder de base.
getEncoder()
qui renvoie un simple Base64.Encoder.encodeToString()
pour encoder la chaîne.Pour décoder une chaîne encodée, nous utiliserons le Base64.Decoder renvoyé par la méthode getDecoder()
.
decode()
du décodeur.Utilisez le bloc de code ci-dessous pour encoder et décoder une chaîne :
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Hello World";
byte[] bytesToEncode = strToEncode.getBytes(); // convertir la chaîne en un tableau d'octets
// Encodage
String encodedStr = Base64.getEncoder().encodeToString(bytesToEncode);
System.out.println("Chaîne encodée : " + encodedStr);
// Décodage
byte[] decodedByteArr = Base64.getDecoder().decode(encodedStr);
String decodedStr = new String(decodedByteArr);
System.out.println("Chaîne décodée : " + decodedStr);
}
}
Exécutez la commande suivante dans le terminal pour compiler et exécuter le code :
javac Base64Encoding.java && java Base64Encoding
Dans l'étape précédente, nous avons vu que l'encodage ajoute des caractères de remplissage ( = ) à la fin de la chaîne encodée. Dans cette étape, nous allons apprendre à encoder sans caractères de remplissage.
Utilisez le bloc de code suivant pour encoder la chaîne sans remplissage :
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Java";
byte[] bytesToEncode = strToEncode.getBytes(); // convertir la chaîne en un tableau d'octets
// Encodage sans remplissage
String encodedStr = Base64.getEncoder().withoutPadding().encodeToString(bytesToEncode);
System.out.println("Chaîne encodée : " + encodedStr);
}
}
Exécutez la commande suivante dans le terminal pour compiler et exécuter le code :
javac Base64Encoding.java && java Base64Encoding
Dans cette étape, nous allons apprendre à encoder et à décoder de manière sécurisée pour les URL et les noms de fichier.
La classe Base64 gère l'encodage et le décodage des URL en utilisant l'alphabet Base64 sécurisé pour les URL et les noms de fichier.
getUrlEncoder()
pour obtenir un encodeur Base64 pour les URL.encodeToString()
comme nous l'avons fait dans la section précédente.De manière similaire, nous avons une méthode getUrlDecoder()
qui renvoie un décodeur pour les URL.
decode()
avec ce décodeur pour le décodage.Utilisez le bloc de code ci-dessous pour encoder et décoder une URL :
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String urlToEncode = "https://go.java/?intcmp=gojava-banner-java-com";
// Encodage
String encodedUrl = Base64.getUrlEncoder().encodeToString(urlToEncode.getBytes());
System.out.println("URL encodée : " + encodedUrl);
// Décodage
byte[] decodedUrlBytes = Base64.getUrlDecoder().decode(encodedUrl);
String decodedUrl = new String(decodedUrlBytes);
System.out.print("URL décodée : " + decodedUrl);
}
}
Exécutez la commande suivante dans le terminal pour compiler et exécuter le code :
javac Base64Encoding.java && java Base64Encoding
Dans cette étape, nous allons apprendre à encoder et à décoder en MIME.
Nous pouvons utiliser les méthodes getMimeEncoder()
et encodeToString()
pour l'encodage.
Pour le décodage, nous utiliserons la méthode getMimeDecoder()
pour obtenir un décodeur, puis nous utiliserons la méthode decode()
.
Utilisez le bloc de code suivant pour encoder et décoder des données MIME :
import java.util.Base64;
import java.util.UUID;
public class Base64Encoding {
public static void main(String[] args) {
// Création d'une entrée MIME pour l'encodage
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i) {
sb.append(UUID.randomUUID().toString());
}
// Encodage
byte[] bytes = sb.toString().getBytes();
String mimeEncodedStr = Base64.getMimeEncoder().encodeToString(bytes);
System.out.println("Chaîne encodée : " + mimeEncodedStr);
// Décodage
byte[] mimeDecodedBytes = Base64.getMimeDecoder().decode(mimeEncodedStr);
String mimeDecodedStr = new String(mimeDecodedBytes);
}
}
Exécutez la commande suivante dans le terminal pour compiler et exécuter le code :
javac Base64Encoding.java && java Base64Encoding
Dans cette étape, nous allons apprendre à utiliser la bibliothèque Apache Commons pour encoder et décoder des données Base64.
La bibliothèque Apache Commons fournit une classe Base64 dans son package org.apache.commons.codec.binary
.
encode()
et decode()
sur les octets de la chaîne pour effectuer l'encodage et le décodage.Utilisez le bloc de code suivant pour encoder et décoder une chaîne à l'aide de la classe Base64 d'Apache Commons :
import org.apache.commons.codec.binary.Base64;
public class Base64Encoding {
public static void main(String[] args) {
Base64 base64 = new Base64();
// Encodage
String strToEncode = "Hello World";
byte[] encodedBytes = base64.encode(strToEncode.getBytes());
String encodedStr = new String(encodedBytes);
System.out.println("Chaîne encodée : " + encodedStr);
// Décodage
byte[] decodedByteArr = base64.decode(encodedStr.getBytes());
String decodedStr = new String(decodedByteArr);
System.out.println("Chaîne décodée : " + decodedStr);
// Accéder directement à l'API en utilisant les méthodes statiques encodeBase64() et decodeBase64()
String strToEncode2 = "Hello World";
String encodedStr2 = new String(Base64.encodeBase64(strToEncode.getBytes()));
String decodedStr2 = new String(Base64.decodeBase64(encodedStr.getBytes()));
}
}
Exécutez la commande suivante dans le terminal pour compiler et exécuter le code :
javac -cp commons-codec-1.15.jar Base64Encoding.java && java -cp commons-codec-1.15.jar:. Base64Encoding
Remarque : Pour exécuter ce code, vous devez télécharger et importer le fichier .jar
de la bibliothèque Apache Commons Codec dans le classpath. Dans la commande ci-dessus, nous avons ajouté -cp commons-codec-1.15.jar
pour spécifier le classpath de la bibliothèque.
Dans ce laboratoire, nous avons appris à encoder et à décoder des données Base64 en Java à l'aide de la classe java.util.Base64
et de la bibliothèque Apache Commons. Nous avons abordé trois schémas différents d'encodage et de décodage Base64 - Basic, URL et Filename safe, et MIME.