So kodieren oder dekodieren Sie eine Base64-Zeichenfolge unter Linux

0
2

Möchten Sie lernen, wie Sie Zeichenfolgen mit dem Base64-Binär-zu-Text-Schema kodieren und dekodieren? Dieses Tutorial zeigt Ihnen zwei Methoden zum Kodieren und Dekodieren einer Zeichenfolge unter Linux mit dem Befehl base64 und der Programmiersprache Python.

Wo wird base64 verwendet?

Base64 wird in verschiedenen Bereichen häufig verwendet. Zu den gängigsten 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 Textformat zu kodieren, damit diese sicher mit der Nachricht übertragen werden können. Webentwickler verwenden Base64 auch, um Bilder in HTML und CSS einzubetten, um die Anzahl der HTTP-Anfragen zu reduzieren und die Seitenladegeschwindigkeit zu verbessern.

Eine weitere häufige Verwendung 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 verwenden, wie HTTP und SMTP, um Daten ohne Beschädigung zu übertragen.

Sie sollten wissen, dass Base64 nur ein Kodierungsschema ist. Die kodierten Daten können leicht dekodiert werden, um die Originaldaten zurückzuerhalten. Sie sollten es niemals verwenden, wenn Sie stattdessen Daten verschlüsseln müssen.

Kodierung einer Zeichenfolge mit dem Befehl base64

Die einfachste Möglichkeit, einen String mit Base64 zu kodieren, besteht darin, ihn mit dem Befehl echo an das Terminal auszugeben. Der Trick besteht darin, die Ausgabe des Befehls echo wie folgt an Base64 weiterzuleiten:

echo 'I love Linux' | base64

Aufgrund des Standardverhaltens des Befehls echo gibt es am Ende des Strings ein Zeilenumbruchzeichen. Wenn Sie dieses weglassen und nur den String verwenden möchten, führen Sie Folgendes aus:

echo -n 'I love Linux' | base64

Wie Sie sehen, unterscheidet sich die Ausgabe von der vorherigen. Sie können dies auch mit dem Befehl printf tun, der nicht automatisch ein Zeilenumbruchzeichen an die Zeichenfolge anfügt. Das Format ist unten angegeben:

printf „I love Linux“ | base64

Diese Ausgabe ist dieselbe wie die vorherige, da diesmal keine Zeilenumbruchzeichen vorhanden sind. Wenn Sie mit Here-Strings unter Linux vertraut sind, können Sie diese auch verwenden, um Ihre String-Ausgabe wie folgt an den Base64-Befehl zu senden:

base64 <<< 'Ich liebe Linux'

Ähnlich wie der Echo-Befehl fügen auch Here-Strings am Ende des Strings ein Newline-Zeichen hinzu.

Kodieren von Dateien mit dem Base64-Befehl

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

Um es auszuprobieren, erstellen Sie eine neue Datei und hängen Sie etwas Text daran an. Wenn Sie bereits eine Textdatei haben, verwenden Sie diese. Ich habe eine Datei namens base.txt erstellt. Um den Inhalt der Datei in Base64 zu kodieren, führen Sie Folgendes aus:

base64 base.txt

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

base64 base.txt > output.txt

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

Dekodieren eines Base64-Strings mit dem Base64-Befehl

Zum Dekodieren eines Base64-Strings und Umwandeln in einen regulären String müssen Sie das Flag „-d“ mit dem Base64-Befehl verwenden. Sehen wir uns eine Demonstration mit dem Echo-Befehl an.

echo 'SG93VG9HZWVrCg==' | base64 -d

Wenn Sie Here-Strings zum Dekodieren eines Base64-Strings verwenden möchten, verwenden Sie:

base64 -d <<< SG93VG9HZWVrCg==

Manchmal kann ein String nicht-alphanumerische Zeichen enthalten. Sie können diese beim Dekodieren des Strings ignorieren, indem Sie die Option „-i“ verwenden.

Python zum Kodieren und Dekodieren eines Base64-Strings verwenden

Wenn Sie Python-Programmierer sind oder sich mit der Programmiersprache Python besser auskennen 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 Zeichenfolgen verwenden können. Sie können entweder den Terminalbefehl python3 verwenden oder ein vollständiges Programm schreiben. Ich zeige Ihnen beide Möglichkeiten.

Der Befehl python3 verfügt über ein Flag „-m“ oder Modul. Sie können dieses Flag verwenden, um das Base64-Modul aufzurufen. Anschließend können Sie Ihre Zeichenfolge mithilfe des Befehls echo oder here-strings übergeben. Hier ist der vollständige Befehl:

echo „Ich liebe Linux“ | python3 -m base64 # Verwenden des Echo-Befehlspython3 -m base64 <<< „Ich liebe Linux“ # Verwenden von here-strings

Um einen Base64-String zu dekodieren, müssen Sie nur das Flag „-d“ verwenden, wie zuvor beim Base64-Befehl zu sehen. Die Syntax lautet wie folgt:

echo 'SSBsb3ZlIExpbnV4Cg==' | python3 -m base64 -d # Verwenden des Echo-Befehls​​​​​​python3 -m base64 -d <<< 'SSBsb3ZlIExpbnV4Cg==' # Verwenden von Here-Strings

Der bequemere Weg besteht natürlich darin, ein Python-Programm zu erstellen, das die Kodierung und Dekodierung anhand von Benutzereingaben übernehmen kann. Lassen Sie uns zunächst ein Programm erstellen, das einen String kodiert. Hier ist der Kodierungscode:

import base64
# Eingabestring vom Benutzer abrufen
input_string = input(“Geben Sie den zu kodierenden String ein: “)
# String mit Base64 kodieren
encoded_string = base64.b64encode(input_string.encode('utf-8'))
# Den kodierten String dekodieren, um sicherzustellen, dass er korrekt ist (optional)
decoded_string = base64.b64decode(encoded_string).decode('utf-8')
# Die kodierten und dekodierten Strings ausgeben
print(“Kodierter String:”, encoded_string.decode('utf-8'))
print(“Dekodierte Zeichenfolge (Verifizierung):”, dekodierte_Zeichenfolge)

Speichern Sie die Datei unter einem geeigneten Namen und der Erweiterung „.py“. Ich speichere sie unter dem Namen base64_encoder.py. Wenn Sie fertig sind, führen Sie das Programm mit folgendem Befehl aus:

python3 base64_encoder.py

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

import base64
# Get input base64 string from the user
encoded_string = input(“Geben Sie die zu dekodierende Base64-Zeichenfolge ein: “)
try:
   # Dekodieren Sie die Zeichenfolge mit base64.b64decode()
   decoded_string = base64.b64decode(encoded_string).decode('utf-8')
   print(“Dekodierte Zeichenfolge:”, decoded_string)
except Exception as e:
   print(f”Fehler beim Dekodieren der Zeichenfolge: {e}”)

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

python3 base64_decoder.py

Jetzt können Sie diese Python-Programme verwenden, um beliebige Zeichenfolgen zu kodieren und zu dekodieren.

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