Veröffentlicht am

Einführung in den Base64-Algorithmus

Viewed

times

Autoren
  • Name
    Twitter
Serie: Base64-Kodierung: Grundlagen und Anwendung in der GLS ShipIT API
Episoden: (1/2)

Willkommen zu unserer Serie über Base64-Kodierung! In diesem Beitrag werden wir die Grundlagen von Base64 erkunden - eine Methode zur Kodierung von Binärdaten in ein Textformat. Lassen Sie uns beginnen.

Voraussetzungen

Bevor wir in die Base64-Kodierung eintauchen, ist es hilfreich, ein grundlegendes Verständnis der folgenden Konzepte zu haben.


Binärdaten
  • Binär ist ein Zahlensystem zur Basis 2, das nur 0en und 1en verwendet
  • Jede Ziffer wird als Bit (binäre Ziffer) bezeichnet
  • Wird verwendet, um alle Daten in Computern darzustellen
  • Beispiel: Der Buchstabe 'A' in Binär ist 01000001
Bits und Bytes
  • Ein Bit ist die kleinste Dateneinheit (0 oder 1)
  • Ein Byte ist eine Gruppe von 8 Bits
  • 1 Byte kann 256 verschiedene Werte darstellen (2^8)
  • Bytes werden häufig verwendet, um Zeichen in der Textkodierung darzustellen
ASCII
  • ASCII steht für American Standard Code for Information Interchange
  • Es ist ein Zeichenkodierungsstandard für elektronische Kommunikation
  • Stellt Textzeichen als Zahlen von 0-127 dar
  • Beispiel: 'A' wird durch die Dezimalzahl 65 dargestellt
Textkodierung
  • Textkodierung ist der Prozess der Umwandlung von menschenlesbarem Text in maschinenlesbares Format
  • Gängige Kodierungen umfassen ASCII, UTF-8 und Unicode
  • Kodierung gewährleistet eine konsistente Darstellung und Speicherung von Text über verschiedene Systeme hinweg
  • Verschiedene Kodierungen unterstützen verschiedene Zeichensätze und Sprachen

Verständnis der Base64-Kodierung

Base64 ist ein Kodierungsalgorithmus, der Binärdaten in ein Textformat umwandelt. Er wurde entwickelt, um die sichere Übertragung von Binärdaten über Kanäle zu ermöglichen, die nur Text unterstützen, wie E-Mail-Systeme, bestimmte Netzwerkprotokolle und ältere Datenspeichersysteme. Diese reinen Textkanäle können in der Regel gut mit ASCII-Zeichen umgehen, können aber Probleme mit Binärdaten haben. Die Base64-Kodierung stellt sicher, dass binäre Informationen zuverlässig über diese textbasierten Systeme übertragen werden können. Lassen Sie uns genauer betrachten, wie es funktioniert.

Der Base64-Zeichensatz

Base64 verwendet einen Satz von 64 Zeichen, um Binärdaten in einem Textformat darzustellen:

  • A-Z (26 Zeichen)
  • a-z (26 Zeichen)
  • 0-9 (10 Zeichen)
  • '+' und '/' (2 Zeichen)

Zusätzlich wird '=' für das Auffüllen verwendet.

Hier ist die vollständige Base64-Indextabelle:

IndexZeichenIndexZeichenIndexZeichenIndexZeichen
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/

Wie Base64-Kodierung funktioniert

Die Base64-Kodierung funktioniert, indem binäre Daten in eine Reihe von 6-Bit-Zahlen umgewandelt werden, die dann mit dem 64-Zeichen-Set dargestellt werden. Hier ist eine schrittweise Aufschlüsselung des Prozesses:

  1. Gruppierung binärer Daten: Die Eingabe-Binärdaten werden in Gruppen von 24 Bits (3 Bytes) unterteilt.
  2. Aufteilung in 6-Bit-Stücke: Jede 24-Bit-Gruppe wird dann in vier 6-Bit-Stücke aufgeteilt.
  3. Umwandlung in Dezimalzahlen: Jedes 6-Bit-Stück wird in sein dezimales Äquivalent (0-63) umgewandelt.
  4. Zuordnung zu Base64-Zeichen: Die Dezimalwerte werden als Indizes verwendet, um Zeichen aus dem Base64-Zeichensatz auszuwählen.

Auffüllung

Wenn die Länge der Eingabedaten kein Vielfaches von 3 Bytes ist, wird eine Auffüllung hinzugefügt:

  • Wenn 1 Byte übrig bleibt, wird es mit zwei '='-Zeichen aufgefüllt.
  • Wenn 2 Bytes übrig bleiben, wird es mit einem '='-Zeichen aufgefüllt.

Beispiel für Base64-Kodierung

Betrachten wir den Namen "Ratan Tata" als Beispiel, um die Base64-Kodierung zu demonstrieren:

  1. Konvertiere den Text "Ratan Tata" in Binär (ASCII):
Anleitung: ASCII zu Binär Konvertierung
R (82):  01010010
a (97):  01100001
t (116): 01110100
a (97):  01100001
n (110): 01101110
  (32):  00100000  // Leerzeichen zwischen "Ratan" und "Tata"
T (84):  01010100
a (97):  01100001
t (116): 01110100
a (97):  01100001

Jedes Zeichen wird in seinen ASCII-Wert und dann in Binär umgewandelt:

  • 'R' hat den ASCII-Wert 82, was in Binär 01010010 ist
  • 'a' hat den ASCII-Wert 97, was in Binär 01100001 ist
  • 't' hat den ASCII-Wert 116, was in Binär 01110100 ist
  • 'n' hat den ASCII-Wert 110, was in Binär 01101110 ist
  • ' ' hat den ASCII-Wert 32, was in Binär 00100000 ist
  • und so weiter für die restlichen Zeichen...
  1. Gruppiere in 24 Bits:

    010100100110000101110100 011000010110111000100000 010101000110000101110100 011000010000000000000000
    

    Wir verketten alle Binärwerte und gruppieren sie in Sätze von 24 Bits (3 Bytes):

    • Erste Gruppe: 010100100110000101110100 (vollständige 24 Bits)
    • Zweite Gruppe: 011000010110111000100000 (vollständige 24 Bits)
    • Dritte Gruppe: 010101000110000101110100 (vollständige 24 Bits)
    • Vierte Gruppe: 011000010000000000000000 (vollständige 24 Bits, mit Auffüllung)
  2. Teile in 6-Bit-Stücke auf:

    010100 100110 000101 110100 011000 010110 111000 100000 010101 000110 000101 110100 011000 010000 000000 000000
    

    Wir teilen jede 24-Bit-Gruppe in vier 6-Bit-Stücke auf:

    • Aus der ersten Gruppe: 010100, 100110, 000101, 110100
    • Aus der zweiten Gruppe: 011000, 010110, 111000, 100000
    • Aus der dritten Gruppe: 010101, 000110, 000101, 110100
    • Aus der vierten Gruppe: 011000, 010000, 000000, 000000
  3. Konvertiere in Dezimal:

Anleitung: Binär zu Dezimal konvertieren
20 38 5 52 24 22 56 32 21 6 5 52 24 16 0 0

Jedes 6-Bit-Stück wird nach demselben Verfahren in sein dezimales Äquivalent umgewandelt:

  • 011000 (binär) = 24 (dezimal)
  • 010110 (binär) = 22 (dezimal)
  • 111000 (binär) = 56 (dezimal)
  • 100000 (binär) = 32 (dezimal)
  • und so weiter für die restlichen Binär-Stücke...
  1. Ordne Base64-Zeichen zu:

    U m F 0 Y W 4 g V G F 0 Y Q = =
    

    Mit Hilfe der Base64-Indextabelle ordnen wir jeden Dezimalwert seinem entsprechenden Base64-Zeichen zu:

    • 20 wird zu 'U' (Großbuchstabe 'U')
    • 38 wird zu 'm' (Kleinbuchstabe 'm')
    • 5 wird zu 'F' (Großbuchstabe 'F')
    • 52 wird zu '0' (Null) Und so weiter für die restlichen Zuordnungen: Y, W, 4, g, V, G, F, 0, Y, Q, A, A
  2. Füge Auffüllung hinzu (falls erforderlich): In diesem Fall benötigen wir eine Auffüllung, da die Eingabelänge (10 Bytes) 80 Bits ergibt, was sich nicht gleichmäßig in 6-Bit-Stücke aufteilen lässt. Wir haben 4 Bits übrig, daher müssen wir zwei '='-Zeichen zur Auffüllung hinzufügen.

Daher lautet die endgültige Base64-Kodierung von "Ratan Tata" (einschließlich des Leerzeichens) "UmF0YW4gVGF0YQ==".

Dieser Prozess stellt sicher, dass alle binären Daten nur mit den 64 Zeichen des Base64-Zeichensatzes dargestellt werden können, was sie sicher für die Übertragung durch textbasierte Systeme macht, die möglicherweise nicht gut mit Binärdaten umgehen können.

Testen Sie Ihr Verständnis
Frage: Was ist die Base64-Kodierung des Wortes "Test"?
Lösung anzeigen

Die Base64-Kodierung von "Test" ist "VGVzdA=="

Erklärung anzeigen

Lassen Sie uns den Prozess aufschlüsseln:

  1. In ASCII umwandeln: T = 84, e = 101, s = 115, t = 116

  2. In Binär umwandeln: T = 01010100, e = 01100101, s = 01110011, t = 01110100

  3. In 24-Bit-Gruppen zusammenfassen: 010101000110010101110011 01110100

  4. In 6-Bit-Stücke aufteilen: 010101 000110 010101 110011 011101 00

  5. In Dezimal umwandeln: 21 6 21 51 29 0

  6. Auf Base64-Zeichen abbilden: V G V z d A

  7. Auffüllung hinzufügen: Da wir 2 Bits übrig haben (weniger als 6), fügen wir zwei '=' zur Auffüllung hinzu.

Daher lautet die endgültige Kodierung "VGVzdA=="

Base64-Dekodierung

Während wir uns bisher auf die Kodierung konzentriert haben, wollen wir nun kurz den umgekehrten Vorgang untersuchen, um unseren Base64-kodierten Text wieder in seine ursprüngliche binäre Form (und zu unserem Ausgangstext) zurückzuverwandeln.

Dekodierungsprozess

  1. Auffüllung entfernen: Zuerst werden alle '='-Zeichen am Ende der kodierten Zeichenkette entfernt.

  2. Umgekehrte Zeichenzuordnung: Jedes Base64-Zeichen wird zurück auf seinen 6-Bit-Wert abgebildet.

  3. Bits kombinieren: Die 6-Bit-Werte werden zu einem kontinuierlichen Bitstrom kombiniert.

  4. In Bytes gruppieren: Der Bitstrom wird in 8-Bit-Stücke (Bytes) gruppiert.

  5. In Originaldaten umwandeln: Diese Bytes werden dann zurück in ihre ursprüngliche Form umgewandelt (ASCII-Zeichen, Binärdaten usw.).

Dekodieren Sie unsere Base64-Zeichenkette "UmF0YW4gVGF0YQ=="?

Dekodierungsprozess:

  1. Auffüllung entfernen: "UmF0YW4gVGF0YQ==" wird zu "UmF0YW4gVGF0YQ"

  2. In Binär umwandeln (6 Bits pro Zeichen): U = 010101, m = 101101, F = 000110, 0 = 110000, Y = 011000, W = 010111, 4 = 110100, g = 100111, V = 010110, G = 000111, F = 000110, 0 = 110000, Y = 011000, Q = 010000

  3. Bits kombinieren:

    010101101101000110110000011000010111110100100111010110000111000110110000011000010000
    
  4. In Bytes gruppieren (8 Bits): 01010110 01101000 01100001 01110100 01100001 01101110 00100000 01010100 01100001 01110100 01100001

  5. In ASCII umwandeln: 82 97 116 97 110 32 84 97 116 97

  6. ASCII in Zeichen umwandeln: R a t a n T a t a

Daher ist das dekodierte Ergebnis "Ratan Tata"

Wir haben nun sowohl den Kodierungs- als auch den Dekodierungsprozess von Base64 untersucht und verstanden, wie binäre Daten in Text und wieder zurück umgewandelt werden können. Diese bidirektionale Umwandlung ist für viele Anwendungen in der Datenübertragung und -speicherung entscheidend. Lassen Sie uns nun einen genaueren Blick auf einige dieser praktischen Anwendungen werfen.

Anwendungen

  • E-Mail-Anhänge: Konvertiert binäre Dateien (einschließlich Bilder, Dokumente und andere Anhänge) in Text für die E-Mail-Übertragung. Dies geschieht typischerweise, wenn das E-Mail-System keine direkten binären Anhänge unterstützt oder um die Kompatibilität zwischen verschiedenen E-Mail-Clients sicherzustellen.
  • Web-Bilder: Bettet kleine Bilder direkt als Textzeichenketten in HTML ein.
  • API-Antworten: Sendet binäre Daten (z.B. Bilder) als Text in API-Antworten.
  • URL-Kodierung: Schließt komplexe Daten sicher in URLs ein, indem sie in Text umgewandelt werden.

Überlegungen

  • Dateigröße: Base64-Kodierung erhöht die Dateigröße um etwa 33%.
  • Caching: Base64-kodierte Ressourcen können von Browsern nicht separat zwischengespeichert werden, was möglicherweise die Ladezeiten beeinflusst.
  • SEO-Auswirkungen: Suchmaschinen können Base64-kodierte Bilder möglicherweise nicht indexieren, was die Sichtbarkeit in der Bildersuche beeinträchtigt.

Fazit

In diesem Beitrag haben wir die Grundlagen der Base64-Kodierung untersucht, einschließlich ihres Prozesses, ihrer Anwendungen und Überlegungen. Wir haben gelernt, wie diese Technik binäre Daten in ein Textformat umwandelt, was sie für verschiedene Datenübertragungs- und Speicherszenarien in der digitalen Welt entscheidend macht.

In unserem nächsten Beitrag werden wir untersuchen, wie Base64-Kodierung bei der Erstellung von GLS-Versandetiketten angewendet wird und damit ein praktisches Beispiel für diese Kodierungstechnik in Aktion liefern. Wir werden uns dabei auf die GLS ShipIT API-Dokumentation1 beziehen.

Footnotes

  1. GLS ShipIT API-Dokumentation. https://shipit.gls-group.eu/webservices/3_2_9/doxygen/WS-REST-API/index.html