- Veröffentlicht am
Einführung in den Base64-Algorithmus
Viewed
times
- Autoren
- Name
- Einführung in den Base64-Algorithmus
- Base64-Kodierung in der GLS ShipIT API
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.
Die folgenden Abschnitte können für schnelle Auffrischungen zu diesen Konzepten erweitert werden. Klicken Sie auf jedes Thema, um mehr Details anzuzeigen.
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:
Index | Zeichen | Index | Zeichen | Index | Zeichen | Index | Zeichen |
---|---|---|---|---|---|---|---|
0 | A | 16 | Q | 32 | g | 48 | w |
1 | B | 17 | R | 33 | h | 49 | x |
2 | C | 18 | S | 34 | i | 50 | y |
3 | D | 19 | T | 35 | j | 51 | z |
4 | E | 20 | U | 36 | k | 52 | 0 |
5 | F | 21 | V | 37 | l | 53 | 1 |
6 | G | 22 | W | 38 | m | 54 | 2 |
7 | H | 23 | X | 39 | n | 55 | 3 |
8 | I | 24 | Y | 40 | o | 56 | 4 |
9 | J | 25 | Z | 41 | p | 57 | 5 |
10 | K | 26 | a | 42 | q | 58 | 6 |
11 | L | 27 | b | 43 | r | 59 | 7 |
12 | M | 28 | c | 44 | s | 60 | 8 |
13 | N | 29 | d | 45 | t | 61 | 9 |
14 | O | 30 | e | 46 | u | 62 | + |
15 | P | 31 | f | 47 | v | 63 | / |
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:
- Gruppierung binärer Daten: Die Eingabe-Binärdaten werden in Gruppen von 24 Bits (3 Bytes) unterteilt.
- Aufteilung in 6-Bit-Stücke: Jede 24-Bit-Gruppe wird dann in vier 6-Bit-Stücke aufgeteilt.
- Umwandlung in Dezimalzahlen: Jedes 6-Bit-Stück wird in sein dezimales Äquivalent (0-63) umgewandelt.
- 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:
Bei der Base64-Kodierung sind Leerzeichen bedeutsam und werden anders kodiert als Buchstaben. Das Leerzeichen hat einen ASCII-Wert von 32 (dezimal) oder 00100000 in Binär, was in unserem Kodierungsprozess berücksichtigt wird.
- Konvertiere den Text "Ratan Tata" in Binär (ASCII):
Anleitung: ASCII zu Binär Konvertierung
ASCII zu Binär Konvertierung
Jedes ASCII-Zeichen wird durch eine eindeutige Dezimalzahl dargestellt, die dann in eine 8-Bit-Binärzahl umgewandelt wird.
Beispiel:
'R' (ASCII) = 82 (dezimal) = 01010010 (binär)
Um 82 in Binär umzuwandeln:
82 ÷ 2 = 41 Rest 0, 41 ÷ 2 = 20 Rest 1, 20 ÷ 2 = 10 Rest 0, 10 ÷ 2 = 5 Rest 0, 5 ÷ 2 = 2 Rest 1, 2 ÷ 2 = 1 Rest 0, 1 ÷ 2 = 0 Rest 1
Lese die Reste von unten nach oben: 01010010
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...
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)
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
Konvertiere in Dezimal:
Anleitung: Binär zu Dezimal konvertieren
Um Binär in Dezimal umzuwandeln:
- Identifiziere die Position jedes Bits, beginnend von rechts nach links (0, 1, 2, ...)
- Für jedes '1'-Bit berechne 2 hoch seine Position
- Summiere alle berechneten Werte
Beispiel:
010100 (binär) = (02^5) + (12^4) + (02^3) + (12^2) + (02^1) + (02^0) = 20 (dezimal)
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...
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
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.
Das Auffüllen mit '='-Zeichen ist notwendig, wenn die Anzahl der Bytes in der Eingabe nicht durch 3 teilbar ist. Dies stellt sicher, dass die Länge der endgültigen Base64-Zeichenkette immer ein Vielfaches von 4 ist. Die Anzahl der hinzugefügten Auffüllzeichen (0, 1 oder 2) hängt davon ab, wie viele Bytes übrig bleiben, nachdem die Eingabelänge durch 3 geteilt wurde.
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:
In ASCII umwandeln: T = 84, e = 101, s = 115, t = 116
In Binär umwandeln: T = 01010100, e = 01100101, s = 01110011, t = 01110100
In 24-Bit-Gruppen zusammenfassen: 010101000110010101110011 01110100
In 6-Bit-Stücke aufteilen: 010101 000110 010101 110011 011101 00
In Dezimal umwandeln: 21 6 21 51 29 0
Auf Base64-Zeichen abbilden: V G V z d A
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
Auffüllung entfernen: Zuerst werden alle '='-Zeichen am Ende der kodierten Zeichenkette entfernt.
Umgekehrte Zeichenzuordnung: Jedes Base64-Zeichen wird zurück auf seinen 6-Bit-Wert abgebildet.
Bits kombinieren: Die 6-Bit-Werte werden zu einem kontinuierlichen Bitstrom kombiniert.
In Bytes gruppieren: Der Bitstrom wird in 8-Bit-Stücke (Bytes) gruppiert.
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:
Auffüllung entfernen: "UmF0YW4gVGF0YQ==" wird zu "UmF0YW4gVGF0YQ"
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
Bits kombinieren:
010101101101000110110000011000010111110100100111010110000111000110110000011000010000
In Bytes gruppieren (8 Bits):
01010110
01101000
01100001
01110100
01100001
01101110
00100000
01010100
01100001
01110100
01100001
In ASCII umwandeln:
82
97
116
97
110
32
84
97
116
97
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
GLS ShipIT API-Dokumentation. https://shipit.gls-group.eu/webservices/3_2_9/doxygen/WS-REST-API/index.html ↩