Base64 ist ein binär-zu-Text-Kodierungsschema, das dazu dient, binäre Daten in einer ASCII-String-Repräsentation darzustellen. Dies wird oft verwendet, um Daten zu kodieren, die andernfalls Sonderzeichen oder nicht druckbare Zeichen enthalten könnten, die in Textprotokollen wie HTTP oder E-Mail schwierig oder unmöglich zu handhaben wären.
Grundlagen
In der Base64-Kodierung werden 64 Zeichen (und eventuell ein 65. Zeichen für Padding) verwendet, um alle möglichen 6-Bit-Blöcke von Daten darzustellen.
Die Zeichen in der Base64-Tabelle sind in der Regel:
- A bis Z (26 Zeichen): Großbuchstaben von A bis Z werden für die ersten 26 Werte verwendet (0 bis 25).
- a bis z (26 Zeichen): Kleinbuchstaben von a bis z werden für die nächsten 26 Werte verwendet (26 bis 51).
- 0 bis 9 (10 Zeichen): Die Ziffern von 0 bis 9 werden für die Werte 52 bis 61 verwendet.
- + (Pluszeichen) und / (Schrägstrich): Diese beiden Sonderzeichen werden normalerweise für die Werte 62 und 63 verwendet.
Je nach Implementierung und Anforderungen können einige Variationen auftreten. Zum Beispiel kann das Zeichen “+” manchmal durch “-” ersetzt werden, um Probleme bei der Verwendung in URLs zu vermeiden. Diese Variationen werden als URL-sicherer Base64 bezeichnet.
In einigen Fällen wird auch ein Padding-Zeichen, normalerweise “=”, am Ende der Base64-Kodierung hinzugefügt, um sicherzustellen, dass die Gesamtlänge ein Vielfaches von 4 ist. Dieses Padding wird verwendet, wenn die ursprünglichen Daten nicht genau in 6-Bit-Blöcken aufgeteilt werden können.
Funktionsweise
- Die binären Daten werden in 6-Bit-Blöcke aufgeteilt.
- Jeder 6-Bit-Block wird durch ein Zeichen aus der Base64-Zeichentabelle repräsentiert.
- Wenn die binären Daten nicht durch 3 teilbar sind (da 3 Bytes oder 24 Bits in vier 6-Bit-Blöcke aufgeteilt werden), wird Padding (
=
) hinzugefügt, um die fehlenden Bits auszugleichen.
Beispiel
Angenommen, Sie möchten das Wort “Hi” kodieren.
- Die ASCII-Werte von “H” und “i” sind
72
und105
bzw. - In Binär:
H = 01001000, i = 01101001
- Kombinieren:
01001000 01101001
- In 6-Bit-Blöcke aufteilen:
010010 000110 1001
- Diese Werte entsprechen in der Base64-Tabelle den Zeichen
U
,G
,l
Da die Datenlänge nicht durch 3 teilbar ist, wird ein Padding-Zeichen (=
) hinzugefügt: UGl=
Anwendung
QmFzZTY0IHdpcmQgaMOkdWZpZyBpbiBlaW5lciBWaWVsemFobCB2b24gQW53ZW5kdW5nZW4gZWluc2NobGllw59saWNoIEUtTWFpbCB2aWEgTUlNRSwgenVyIFNwZWljaGVydW5nIGtvbXBsZXhlciBEYXRlbiBpbiBYTUwgb2RlciBKU09OLCBmw7xyIGRpZSBLb2RpZXJ1bmcgdm9uIEJlbnV0emVybmFtZW4gdW5kIFBhc3N3w7ZydGVybiBpbiBXZWItVVJMcyB1bmQgdmllbGVtIG1laHIgdmVyd2VuZGV0Lg==
Da Base64 nicht dazu dient, Daten zu verschlüsseln, sollte es nicht als Ersatz für eine sichere Verschlüsselung betrachtet werden. Es dient lediglich dazu, binäre Daten so zu kodieren, dass sie sicher durch Systeme transportiert werden können, die nur Text verarbeiten.