Kodierung oder Dekodierung eines base64-Strings unter Linux


Linux
2024-01-31T16:15:14Z

Möchten Sie lernen, wie man Zeichenketten mit dem Base64-Binary-to-Text-Schema kodiert und dekodiert? Dieses Tutorial zeigt Ihnen zwei Methoden zur Kodierung und Dekodierung einer Zeichenkette unter Linux mit dem Befehl base64 und der Programmiersprache Python.

Wo wird base64 verwendet?

base64 wird in vielen verschiedenen Bereichen verwendet. Zu den häufigsten Bereichen gehören E-Mail-Anhänge, Webentwicklung, Netzwerke und URL-Kodierung.

Einige E-Mail-Systeme verwenden base64, um binäre Daten wie Bilder und Dokumente in ein Textformat zu kodieren, damit diese sicher mit der Nachricht übertragen werden können. Webentwickler verwenden base64 auch zum Einbetten von Bildern in HTML und CSS, um die Anzahl der HTTP-Anfragen zu verringern und die Ladegeschwindigkeit der Seite zu verbessern.

Eine weitere häufige Anwendung der base64-Kodierung sind Authentifizierungstoken. Benutzernamen und Passwörter werden manchmal mit diesem Kodierungsschema maskiert und zu HTTP-Headern oder URL-Parametern hinzugefügt. In Netzwerken wird base64 in Protokollen verwendet, die textbasierte Kommunikation nutzen, wie z. B. HTTP und SMTP, um Daten unverfälscht zu übermitteln.

Sie sollten wissen, dass base64 nur ein Kodierungsschema ist. Die kodierten Daten können leicht dekodiert werden, um die ursprünglichen Daten wiederherzustellen. Sie sollten es niemals verwenden, wenn Sie stattdessen Daten verschlüsseln müssen.

Kodierung einer Zeichenkette mit dem Befehl base64

Der einfachste Weg, eine Zeichenkette mit base64 zu kodieren, ist die Ausgabe auf dem Terminal mit dem Befehl echo. Der Trick besteht darin, die Ausgabe des echo-Befehls nach base64 zu leiten, etwa so:

echo 'Ich liebe Linux' | base64

The Linux terminal showing the process of encoding a string

Aufgrund des Standardverhaltens des echo-Befehls wird am Ende der Zeichenkette ein Zeilenumbruchzeichen eingefügt. Wenn Sie das weglassen und nur die Zeichenkette verwenden möchten, führen Sie aus:

echo -n 'Ich liebe Linux' | base64

The Linux terminal displaying the process of encoding a string using base64 omitting the newline character

Wie Sie sehen können, unterscheidet sich die Ausgabe von der vorherigen. Sie können dies auch mit dem printf-Befehl tun, der nicht automatisch ein Zeilenumbruchzeichen an die Zeichenkette anhängt. Das Format ist unten angegeben:

printf 'Ich liebe Linux' | base64

The Linux terminal showing the process of encoding a string received from the printf command using base64

Diese Ausgabe ist die gleiche wie die vorherige, da diesmal keine Zeilenumbrüche vorkommen. Wenn Sie mit here-Zeichenfolgen unter Linux vertraut sind, können Sie diese auch verwenden, um Ihre Zeichenkettenausgabe wie folgt an den Befehl base64 zu senden:

base64 <<< 'Ich liebe Linux'

The Linux terminal showcases how to encode a string using the base64 command with the help of here string operator

Ähnlich wie beim echo-Befehl wird auch bei here-strings am Ende der Zeichenkette ein Zeilenumbruch hinzugefügt.

Kodierung von Dateien mit dem Befehl base64

Um eine Datei mit base64 zu kodieren, können Sie die Datei direkt als Option an den Befehl base64 übergeben.

Um das auszuprobieren, erstellen Sie eine neue Datei und fügen Sie einen Text an diese an. Wenn Sie bereits eine Textdatei haben, dann verwenden Sie diese. Ich habe eine Datei namens base.txt erstellt. Um den Inhalt der Datei in base64 zu kodieren, führen Sie aus:

base64 base.txt

The Linux terminal displaying the process of encoding a file to base64 using the base64 command

Denken Sie daran, base.txt durch Ihren Dateinamen zu ersetzen. Der obige Befehl zeigt nur die Ausgabe im Terminal an. Er speichert die kodierte Zeichenkette nirgendwo ab. Sie können dies jedoch leicht tun, indem Sie die Ausgabe in eine neue Datei umleiten. Ich habe eine weitere Datei namens output.txt erstellt. Diesmal werde ich die Ausgabe in dieser leeren Datei speichern. Hier ist der Befehl dafür:

>base64 base.txt ausgabe.txt

The Linux terminal showcasing the process of encoding the content of a file to base64 and saving it to another file

Wie Sie sehen können, hat das Terminal die Ausgabe nicht angezeigt. Dieser Befehl speichert sie stattdessen in einer anderen Datei.

Dekodierung einer base64-Zeichenkette mit dem Befehl base64

Um eine base64-Zeichenkette zu dekodieren und in eine normale Zeichenkette umzuwandeln, müssen Sie das Flag "-d" mit dem Befehl base64 verwenden. Hier eine Demonstration mit dem Befehl echo.

echo 'SG93VG9HZWVrCg==' | base64 -d

The Linux terminal displaying the process of decoding a base64 string using the base64 command with the help of the echo command

Wenn Sie here-strings zum Dekodieren einer base64-Zeichenkette verwenden möchten, dann verwenden Sie:

base64 -d <<< SG93VG9HZWVrCg==

The Linux terminal displaying the process of decoding a base64 string using the base64 command with the help of here-strings

Manchmal gibt es nicht-alphanumerische Zeichen in einer Zeichenkette. Sie können diese bei der Dekodierung des Strings ignorieren, indem Sie die Option "-i" verwenden.

Kodierung und Dekodierung eines base64-Strings mit Python

Wenn Sie ein Python-Programmierer sind oder mit der Programmiersprache Python besser vertraut sind als mit Bash, ist diese Methode für Sie besser geeignet. Python verfügt über ein base64-Modul, das Sie zum Kodieren und Dekodieren von Zeichenketten verwenden können. Sie können entweder den Terminalbefehl python3 verwenden oder ein vollständiges Programm schreiben. Ich werde Ihnen beide Möglichkeiten zeigen.

Der python3-Befehl hat ein "-m" oder Modul-Flag. Mit diesem Flag können Sie das base64-Modul aufrufen. Dann können Sie Ihre Zeichenkette mit Hilfe des Befehls echo oder here-strings übergeben. Hier ist der vollständige Befehl:

echo 'I love Linux' | python3 -m base64 # Verwendung des echo-Befehlspython3 -m base64 <<< 'I love Linux' # Verwendung von here-strings

The Linux terminal displays the process of encoding a string to base64 using Python language

Um eine base64-Zeichenkette zu dekodieren, müssen Sie nur die "-d"-Flagge verwenden, wie zuvor beim Befehl base64 gesehen. Die Syntax lautet wie folgt:

echo 'SSBsb3ZlIExpbnV4Cg==' | python3 -m base64 -d # Verwendung des Befehls echopython3 -m base64 -d <<< 'SSBsb3ZlIExpbnV4Cg==' # Verwendung von here-strings

The Linux terminal showing the process of decoding a base64 string using the Python language

Der bequemere Weg ist natürlich, ein Python-Programm zu erstellen, das die Kodierung und Dekodierung über die Benutzereingabe abwickeln kann. Lassen Sie uns zunächst ein Programm erstellen, das eine Zeichenkette kodiert. Hier ist der Kodierungscode:

import base64
# Eingabe vom Benutzer
input_string = input("Geben Sie die zu kodierende Zeichenkette ein: ")
# Kodierung der Zeichenkette mit base64
encoded_string = base64.b64encode(input_string.encode('utf-8'))
# Dekodierung der kodierten Zeichenkette, um sicherzustellen, dass sie korrekt ist (optional)
decoded_string = base64.b64decode(encoded_string).decode('utf-8')
# Druckt die kodierte und dekodierte Zeichenkette
print("Kodierte Zeichenkette:", encoded_string.decode('utf-8'))
print("Dekodierte Zeichenkette (Überprüfung):", decoded_string)

Speichern Sie die Datei unter einem geeigneten Namen und mit der Erweiterung ".py". Ich speichere sie unter dem Namen base64_encoder.py. Führen Sie das Programm anschließend mit aus:

python3 base64_encoder.py

The Linux terminal showcasing the process of encoding a string using a Python program

Sie können auch ein Programm zum Dekodieren einer base64-Zeichenfolge erstellen. Hier ist ein Codeschnipsel, den Sie verwenden können:

import base64
# Eingabe base64-String vom Benutzer erhalten
encoded_string = input("Geben Sie den zu dekodierenden Base64-String ein: ")
try:
# Dekodiere den String mit base64.b64decode()
decoded_string = base64.b64decode(encoded_string).decode('utf-8')
print("Decoded string:", decoded_string)
except Exception as e:
print(f "Fehler beim Dekodieren von String: {e}")

Speichern Sie die Datei und führen Sie das Programm auf die gleiche Weise aus.

python3 base64_decoder.py

The Linux terminal displaying the process of decoding a base64 string using a Python program

Mit diesen Python-Programmen können Sie nun beliebige Zeichenketten kodieren und dekodieren.


Dies sind also zwei der einfachsten Möglichkeiten, Zeichenketten mit base64 zu kodieren und zu dekodieren. Wenn Sie mehr über den base64-Befehl unter Linux erfahren möchten, lesen Sie am besten die entsprechende Handbuchseite.