Einführung
In diesem Lab werden wir lernen, wie man in Java Base64-Daten mithilfe der Klasse java.util.Base64 und der Apache Commons-Bibliothek kodiert und dekodiert.
Erstelle eine neue Java-Datei
In diesem Schritt erstellen Sie eine neue Java-Datei. Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus, um eine neue Java-Datei zu erstellen:
touch ~/project/Base64Encoding.java
Dieser Befehl erstellt eine neue Datei namens Base64Encoding.java im Verzeichnis ~/project. Sie können einen beliebigen bevorzugten Namen verwenden, aber sicherstellen, dass der Dateiname mit .java endet.
Grundlegende Kodierung und Dekodierung
In diesem Schritt lernen wir über die Grundlegende Kodierung und Dekodierung.
- Der Basic-Coder verwendet das Base64-Alphabet zur Kodierung und Dekodierung.
- Er fügt keinerlei Zeilenumbrüche zur codierten Zeichenfolge hinzu.
- Wir werden die
getEncoder()-Methode verwenden, die einen einfachen Base64.Encoder zurückgibt. - Anschließend werden wir die
encodeToString()-Methode verwenden, um die Zeichenfolge zu kodieren.
Zum Dekodieren einer codierten Zeichenfolge verwenden wir den Base64.Decoder, der von der getDecoder()-Methode zurückgegeben wird.
- Wir werden die
decode()-Methode des Decoders verwenden.
Verwenden Sie den folgenden Codeblock, um eine Zeichenfolge zu kodieren und zu dekodieren:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Hello World";
byte[] bytesToEncode = strToEncode.getBytes(); // wandelt die Zeichenfolge in ein Byte-Array um
// Kodierung
String encodedStr = Base64.getEncoder().encodeToString(bytesToEncode);
System.out.println("Codierte Zeichenfolge: " + encodedStr);
// Dekodierung
byte[] decodedByteArr = Base64.getDecoder().decode(encodedStr);
String decodedStr = new String(decodedByteArr);
System.out.println("Dekodierte Zeichenfolge: " + decodedStr);
}
}
Führen Sie den folgenden Befehl im Terminal aus, um den Code zu kompilieren und auszuführen:
javac Base64Encoding.java && java Base64Encoding
Base64-Kodierung ohne Padding
Im vorherigen Schritt haben wir gesehen, dass die Kodierung Auffüllzeichen ( = ) am Ende der codierten Zeichenfolge hinzufügt. In diesem Schritt werden wir lernen, wie man ohne Auffüllzeichen kodiert.
Verwenden Sie den folgenden Codeblock, um die Zeichenfolge ohne Auffüllung zu kodieren:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Java";
byte[] bytesToEncode = strToEncode.getBytes(); // wandelt die Zeichenfolge in ein Byte-Array um
// Kodierung ohne Auffüllung
String encodedStr = Base64.getEncoder().withoutPadding().encodeToString(bytesToEncode);
System.out.println("Codierte Zeichenfolge: " + encodedStr);
}
}
Führen Sie den folgenden Befehl im Terminal aus, um den Code zu kompilieren und auszuführen:
javac Base64Encoding.java && java Base64Encoding
URL- und Dateinamen-sichere Kodierung und Dekodierung
In diesem Schritt lernen wir über die URL- und Dateinamen-sichere Kodierung und Dekodierung.
Die Base64-Klasse behandelt die URL-Kodierung und -Dekodierung, indem sie das URL- und Dateinamen-sichere Base64-Alphabet verwendet.
- Wir werden die
getUrlEncoder()-Methode verwenden, um einen Base64-URL-Coder zu erhalten. - Anschließend werden wir die
encodeToString()-Methode wie im vorherigen Abschnitt verwenden.
Ähnlich haben wir eine getUrlDecoder()-Methode, die einen URL-Decoder zurückgibt.
- Wir können die
decode()-Methode mit diesem Decoder verwenden, um zu dekodieren.
Verwenden Sie den folgenden Codeblock, um eine URL zu kodieren und zu dekodieren:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String urlToEncode = "https://go.java/?intcmp=gojava-banner-java-com";
// Kodierung
String encodedUrl = Base64.getUrlEncoder().encodeToString(urlToEncode.getBytes());
System.out.println("Codierte URL: " + encodedUrl);
// Dekodierung
byte[] decodedUrlBytes = Base64.getUrlDecoder().decode(encodedUrl);
String decodedUrl = new String(decodedUrlBytes);
System.out.print("Dekodierte URL: " + decodedUrl);
}
}
Führen Sie den folgenden Befehl im Terminal aus, um den Code zu kompilieren und auszuführen:
javac Base64Encoding.java && java Base64Encoding
MIME-Kodierung und -Dekodierung
In diesem Schritt lernen wir über die MIME-Kodierung und -Dekodierung.
- Die Base64-Klasse verwendet das Base64-Alphabet für ihre Kodierungs- und Dekodierungsoperationen.
- In der codierten Ausgabe enthält jede Zeile maximal 76 Zeichen.
- Jede Zeile endet mit einem Wagenrücklauf( \r ) gefolgt von einem Zeilenumbruch( \n ) als Zeilenseparator.
Wir können die getMimeEncoder()- und die encodeToString()-Methoden für die Kodierung verwenden.
Zum Dekodieren verwenden wir die getMimeDecoder()-Methode, um einen Decoder zu erhalten, und anschließend die decode()-Methode.
Verwenden Sie den folgenden Codeblock, um MIME-Daten zu kodieren und zu dekodieren:
import java.util.Base64;
import java.util.UUID;
public class Base64Encoding {
public static void main(String[] args) {
// Erstellen einer MIME-Eingabe für die Kodierung
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i) {
sb.append(UUID.randomUUID().toString());
}
// Kodierung
byte[] bytes = sb.toString().getBytes();
String mimeEncodedStr = Base64.getMimeEncoder().encodeToString(bytes);
System.out.println("Codierte Zeichenfolge: " + mimeEncodedStr);
// Dekodierung
byte[] mimeDecodedBytes = Base64.getMimeDecoder().decode(mimeEncodedStr);
String mimeDecodedStr = new String(mimeDecodedBytes);
}
}
Führen Sie den folgenden Befehl im Terminal aus, um den Code zu kompilieren und auszuführen:
javac Base64Encoding.java && java Base64Encoding
Verwendung der Apache Commons-Bibliothek
In diesem Schritt lernen wir, wie man die Apache Commons-Bibliothek zur Kodierung und Dekodierung von Base64-Daten verwendet.
Die Apache Commons-Bibliothek stellt eine Base64-Klasse im Paket org.apache.commons.codec.binary zur Verfügung.
- Diese Klasse enthält fünf verschiedene Konstruktoren für verschiedene Codierungsschemata.
- Nachdem eine Base64-Instanz erstellt wurde, können wir die
encode()- unddecode()-Methoden auf den String-Bytes verwenden, um die Kodierung und Dekodierung durchzuführen.
Verwenden Sie den folgenden Codeblock, um eine Zeichenfolge mit der Apache Commons Base64-Klasse zu kodieren und zu dekodieren:
import org.apache.commons.codec.binary.Base64;
public class Base64Encoding {
public static void main(String[] args) {
Base64 base64 = new Base64();
// Kodierung
String strToEncode = "Hello World";
byte[] encodedBytes = base64.encode(strToEncode.getBytes());
String encodedStr = new String(encodedBytes);
System.out.println("Codierte Zeichenfolge: " + encodedStr);
// Dekodierung
byte[] decodedByteArr = base64.decode(encodedStr.getBytes());
String decodedStr = new String(decodedByteArr);
System.out.println("Dekodierte Zeichenfolge: " + decodedStr);
// Direkten Zugang zur API über die statischen Methoden encodeBase64() und decodeBase64()
String strToEncode2 = "Hello World";
String encodedStr2 = new String(Base64.encodeBase64(strToEncode.getBytes()));
String decodedStr2 = new String(Base64.decodeBase64(encodedStr.getBytes()));
}
}
Führen Sie den folgenden Befehl im Terminal aus, um den Code zu kompilieren und auszuführen:
javac -cp commons-codec-1.15.jar Base64Encoding.java && java -cp commons-codec-1.15.jar:. Base64Encoding
Hinweis: Um diesen Code auszuführen, müssen Sie die .jar-Datei der Apache Commons Codec-Bibliothek herunterladen und in den Klassenpfad importieren. Im obigen Befehl haben wir -cp commons-codec-1.15.jar hinzugefügt, um den Klassenpfad der Bibliothek anzugeben.
Zusammenfassung
In diesem Lab haben wir gelernt, wie man in Java Base64-Daten mit der java.util.Base64-Klasse und der Apache Commons-Bibliothek kodieren und dekodieren kann. Wir haben drei verschiedene Base64-Kodierungs- und -Dekodierungsschemata behandelt - Basic, URL und Dateinamen-sicher sowie MIME.



