Sprache : en | de | fr | es

UUID vs. GUID: Was ist der Unterschied?

Base64 ist ein Mechanismus zur Umwandlung von Binärdaten in Text, der beliebige Bytes in eine begrenzte Menge druckbarer ASCII-Zeichen umwandelt. Dabei werden Daten weder verschlüsselt noch komprimiert. Stattdessen werden Binärdaten in Textform dargestellt, sodass sie sicher durch Systeme übertragen werden können, die in erster Linie für Text ausgelegt sind.

In diesem Artikel wird die Base64-Kodierung aus technischer und praktischer Sicht erläutert: wie sie auf Bit-Ebene funktioniert, warum sie die Größe um etwa 33 % erhöht und wo sie verwendet werden sollte (und wo nicht).

Was macht die Base64-Kodierung?

Im Kern führt der Algorithmus eine einfache Operation aus:

  1. Er nimmt rohe Binäreingaben entgegen.
  2. Er teilt sie in 6-Bit-Gruppen auf.
  3. Er ordnet jede Gruppe einem von 64 vordefinierten ASCII-Zeichen zu.
  4. Er gibt eine Textzeichenfolge aus, die nur aus sicheren Zeichen besteht.

Warum 6 Bit?

Sechs Bit können 64 verschiedene Werte darstellen (2⁶ = 64). Jeder Wert entspricht einem Zeichen aus dem Base64-Alphabet:

Indexbereich

Verwendete Zeichen

0–25

A–Z

26–51

a–z

52–61

0–9

62

+

63

/

Wenn die Eingabelänge nicht durch drei Bytes (24 Bit) teilbar ist, wird eine Auffüllung mit = vorgenommen, um eine korrekte Ausrichtung zu gewährleisten.

Hinweis: Einige Base64-Varianten (z. B. Raw- oder URL-sicheres Base64) lassen Auffüllzeichen (=) weg.

Beispiel: Kodierung von 3 Bytes

Originalbytes

Binäre Darstellung

6-Bit-Gruppen

Kodierte Ausgabe

3 bytes (24 bits)

01001000 01101001 00100001

010010 000110 100100 100001

SGkh

Jede 3 Bytes werden zu 4 codierten Zeichen. Dieses Verhältnis (3:4) erklärt die 33%ige Zunahme der Größe.

Wofür wird die Base64-Kodierung verwendet?

Dies ist eine der häufigsten Fragen zur Implementierung. In der Praxis wird sie immer dann verwendet, wenn Binärdaten über einen rein textbasierten oder textsensitiven Kanal übertragen werden müssen.

Typische Szenarien sind:

  • E-Mail-Anhänge (MIME)
  • HTTP-Basisauthentifizierung
  • Einbetten von Bildern in HTML oder CSS (Daten-URLs)
  • JSON- oder XML-Nutzdaten mit Binärinhalten
  • Speichern von Binärdaten in Cookies
  • Übertragen von API-Tokens
  • Einbetten von Zertifikaten und kryptografischen Schlüsseln

E-Mail (MIME)

SMTP unterstützte ursprünglich nur ASCII-Zeichen. Binäre Anhänge mussten in Text umgewandelt werden. Durch die Kodierung konnten Bilder, PDFs und andere Dateien sicher übertragen werden.

HTTP-Authentifizierung

Bei der Basisauthentifizierung werden Anmeldedaten in Headern gesendet. Header müssen textbasiert sein, daher werden Benutzername und Passwort vor der Übertragung kodiert.

Wichtig: Dies ist keine Verschlüsselung. Jeder kann sie leicht entschlüsseln.

Daten-URLs

Beispiel:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." />

Das Bild wird direkt in das Dokument eingebettet. Dies ist zwar praktisch, erhöht jedoch die Nutzlastgröße und sollte daher mit Bedacht eingesetzt werden.

Was macht Base64 eigentlich?

Genau genommen bedeutet Base64 die Umwandlung von 8-Bit-Binärsequenzen in eine eingeschränkte 6-Bit-Textdarstellung, die auf ASCII-Zeichen abgebildet wird.

Es macht Folgendes nicht:

  • Daten sichern
  • Informationen verbergen
  • Inhalte komprimieren
  • Die Leistung verbessern

Es formatiert lediglich Daten neu.

Wann sollten Sie diese Transformation verwenden?

Verwenden Sie diese Transformation nur, wenn dies aufgrund von Protokoll- oder Umgebungsbeschränkungen erforderlich ist.

Empfohlene Anwendungsfälle

  • Auf ASCII beschränkte Legacy-Systeme
  • Textbasierte Transportschichten
  • APIs, die Text-Payloads erwarten
  • Einbettung von Binärdaten in strukturierte Formate

Wenn möglich vermeiden

  • Übertragung großer Dateien
  • Leistungskritische Payloads
  • Streaming-Medien
  • Speichersysteme, die Binärdaten nativ akzeptieren

Wenn der Binärtransport unterstützt wird (moderne HTTP-Bodies, HTTP/2, gRPC), ist die direkte Binärübertragung effizienter.

Auswirkungen auf Speicher und Leistung

Aus jeweils 3 Eingangsbytes werden 4 Ausgangszeichen.

Mathematisch ausgedrückt:

(4 / 3) × 100 % ≈ 133 %

Die Datenmenge wächst also um etwa 33 %.

Weitere Überlegungen:

  • CPU-Kosten für die Kodierung/Dekodierung
  • Erhöhte Netzwerkbandbreite
  • Größerer Speicherbedarf
  • Verringerte Cache-Effizienz

Bei kleinen Nutzdaten ist der Mehraufwand vernachlässigbar. Bei großen Assets wird er messbar.

Varianten

Unterschiedliche Umgebungen erfordern leicht modifizierte Alphabete.

Variante

Unterschiede

Anwendungsfall

Standard

Verwendet + und /

Allgemeiner Zweck

URL-sicher

Verwendet - und _

URLs und JWT

MIME

Zeilenumbrüche erlaubt

E-Mail

Keine Auffüllung

Entfernt =

Einige APIs

Die URL-sichere Variante ist in der Webentwicklung weit verbreitet, da + und / in URLs eine besondere Bedeutung haben.

Praktische Umsetzung

Die meisten Sprachen bieten integrierte Dienstprogramme:

  • JavaScript: btoa() / atob()
  • Python: base64-Modul
  • PHP: base64_encode() / base64_decode()
  • Go: encoding/base64
  • Java: java.util.Base64

Codieren/Decodieren Sie immer auf Byte-Ebene. Die Fehlinterpretation von Zeichencodierungen (UTF-8 vs. UTF-16) ist eine häufige Ursache für Fehler.

Sicherheitshinweise

Da verschlüsselte Daten unverständlich aussehen, werden sie oft fälschlicherweise als Verschlüsselung angesehen.

  • Wichtige Klarstellung:
  • Die Verschlüsselung ist ohne Schlüssel reversibel.
  • Sie bietet keinerlei Vertraulichkeit.
  • Sie verhindert keine Manipulationen.

Verwenden Sie aus Sicherheitsgründen geeignete kryptografische Algorithmen (AES, RSA usw.).

Zusammenfassung

Die Binär-zu-Text-Konvertierung dient dazu, Kompatibilitätsprobleme in textbeschränkten Systemen zu lösen. Sie wandelt Rohbytes in eine begrenzte, druckbare ASCII-Teilmenge um, damit sie sicher durch Protokolle wie SMTP, HTTP-Header und strukturierte Textformate übertragen werden können.

Dadurch erhöht sich die Größe um etwa ein Drittel und es entsteht ein zusätzlicher Verarbeitungsaufwand, aber aufgrund ihrer Einfachheit, Universalität und systemübergreifenden Kompatibilität wird sie nach wie vor häufig verwendet.

Wenn Sie verstehen, wie sie auf Bit-Ebene funktioniert, können Sie besser entscheiden, wann sie notwendig ist – und wann sie lediglich vermeidbaren Aufwand verursacht.