Was ist Base64-Kodierung? Ein vollständiger Leitfaden für Einsteiger

01 Jan 2026 1,714 words

Base64 ist ein Binär-zu-Text-Kodierungsschema, das binäre Daten in ein ASCII-Stringformat umwandelt. Es wird häufig verwendet, wenn binäre Daten kodiert werden müssen, insbesondere bei der Übertragung von Daten über Medien, die für Textdaten ausgelegt sind. Wenn Sie schon einmal eine Zeichenfolge wie aGVsbG8gd29ybGQ= gesehen haben und sich gefragt haben, was sie darstellt, sind Sie auf Base64-Kodierung gestoßen. Dieser Leitfaden erklärt, was Base64 ist, wie es unter der Haube funktioniert, warum es existiert und wann Sie es verwenden sollten.

Der grundlegende Grund für die Existenz von Base64 ist, dass viele Transportprotokolle und Datenformate für Text und nicht für Binärdaten entwickelt wurden. E-Mail wurde ursprünglich nur für 7-Bit-ASCII-Text konzipiert. JSON und XML sind textbasierte Formate. URLs haben eingeschränkte Zeichensätze. Wenn Sie eine Bilddatei, einen kryptografischen Schlüssel oder andere binäre Daten über diese Kanäle senden müssen, benötigen Sie eine Möglichkeit, die binären Bytes als sichere Textzeichen darzustellen. Base64 löst dieses Problem, indem es beliebige Bytes auf einen Satz von 64 sicheren Zeichen abbildet.

Das Problem, das Base64 löst

Stellen Sie sich vor, Sie möchten einem Freund ein Foto per E-Mail senden. Das Foto wird als Binärdatei gespeichert. Wenn Sie es an eine E-Mail anhängen, müssen der E-Mail-Client und der Server die binären Daten so kodieren, dass sie sicher durch die E-Mail-Infrastruktur gelangen, die für Textnachrichten ausgelegt wurde. Frühe E-Mail-Systeme konnten Binärdaten beschädigen, weil sie bestimmte Bytewerte als Steuerzeichen interpretierten oder das höchste Bit jedes Bytes entfernten.

Base64 löst dies, indem es die binären Daten nur mit Zeichen darstellt, die in textbasierten Systemen universell unterstützt werden: Großbuchstaben, Kleinbuchstaben, Ziffern und zwei zusätzliche Zeichen (+ und /), sowie das Füllzeichen (=). Dadurch wird sichergestellt, dass die kodierten Daten die Übertragung durch jedes System überstehen, das ASCII-Text verarbeitet.

Wie Base64 funktioniert

Base64 wandelt Gruppen von 3 Bytes (24 Bits) in 4 Gruppen von jeweils 6 Bits um. Jede 6-Bit-Gruppe wird einem Zeichen aus dem Base64-Alphabet zugeordnet. Der Prozess ist deterministisch und vollständig umkehrbar, sodass jeder Base64-kodierte String wieder in die ursprünglichen Binärdaten dekodiert werden kann.

Der schrittweise Prozess

Lassen Sie uns die Kodierung des Textes "Man" nachvollziehen, um die Mechanik zu verstehen.

  1. Nehmen Sie die ASCII-Werte jedes Zeichens:

    • M = 77 (dezimal) = 01001101 (binär)
    • a = 97 (dezimal) = 01100001 (binär)
    • n = 110 (dezimal) = 01101110 (binär)
  2. Verketten Sie die 8-Bit-Werte zu einer einzigen 24-Bit-Sequenz:

    • 01001101 01100001 01101110
  3. Teilen Sie die 24-Bit-Sequenz in vier 6-Bit-Gruppen auf:

    • 010011 = 19
    • 010110 = 22
    • 000101 = 5
    • 101110 = 46
  4. Ordnen Sie jeden 6-Bit-Wert dem entsprechenden Base64-Alphabetzeichen mithilfe der Index-Tabelle zu:

    • 19 → T
    • 22 → W
    • 5 → F
    • 46 → u
  5. Ergebnis: "TWFu"

Umgang mit Padding

Was passiert, wenn die Eingabelänge kein Vielfaches von 3 Bytes ist? Base64 verwendet Padding, um diesen Fall zu behandeln. Wenn die letzte Gruppe nur 1 Byte (8 Bits) hat, wird sie mit 4 Nullbits aufgefüllt, um zwei 6-Bit-Gruppen zu bilden, und zwei Padding-Zeichen (==) werden hinzugefügt. Wenn die letzte Gruppe 2 Bytes (16 Bits) hat, wird sie mit 2 Nullbits aufgefüllt, um drei 6-Bit-Gruppen zu bilden, und ein Padding-Zeichen (=) wird hinzugefügt.

Zum Beispiel die Kodierung des einzelnen Bytes "M" (01001101):

  • 24-Bit-Gruppe: 01001101 00000000 00000000 (mit Nullen aufgefüllt)
  • 6-Bit-Gruppen: 010011 = 19 → T, 010000 = 16 → Q, 000000 = 0 → A, 000000 = 0 → A
  • Da jedoch nur 1 Byte bereitgestellt wurde, fügen wir == Padding hinzu
  • Ergebnis: "TQ=="

Das Padding stellt sicher, dass die kodierte Ausgabelänge immer ein Vielfaches von 4 Zeichen ist. Dekodierer verwenden das Padding, um zu bestimmen, wie viele Bytes beim Zurückkonvertieren in Binärdaten verworfen werden müssen.

Das vollständige Base64-Alphabet

Wert Zeichen Wert Zeichen Wert Zeichen Wert 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 /

Das Padding-Zeichen = wird verwendet, wenn die Länge der Eingabedaten kein Vielfaches von 3 Bytes ist.

Häufige Anwendungsfälle

Die Base64-Kodierung taucht in vielen verschiedenen Zusammenhängen der Webentwicklung und Softwareentwicklung auf.

Anwendungsfall Beschreibung
Daten-URIs Einbetten von Bildern in HTML oder CSS
HTTP-Basis-Auth Kodieren von Anmeldedaten in Headern
JSON/XML-Nutzdaten Speichern von Binärdaten in Textformaten
E-Mail-Anhänge MIME-Base64-Kodierung
JWT-Tokens Header- und Nutzdatenkodierung

Daten-URIs

Daten-URIs ermöglichen es Ihnen, Bilder, Schriftarten und andere Ressourcen direkt in HTML- oder CSS-Dateien einzubetten. Anstatt auf eine externe Bilddatei zu verlinken, kodieren Sie das Bild als Base64 und fügen es inline ein:

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

Dies eliminiert eine HTTP-Anfrage, allerdings auf Kosten einer 33-prozentigen Größensteigerung. Daten-URIs sind am vorteilhaftesten für kleine Assets wie Symbole, Logos und UI-Elemente.

HTTP-Basisauthentifizierung

Die HTTP-Basisauthentifizierung sendet Anmeldedaten als Base64-kodierten String im Authorization-Header. Das Format ist Basic base64(benutzername:passwort). Beachten Sie, dass Base64 keine Verschlüsselung ist; die Anmeldedaten können von jedem, der die Anfrage abfängt, trivial dekodiert werden. Die Basis-Auth sollte immer über HTTPS verwendet werden, um die Anmeldedaten während der Übertragung zu schützen.

Authorization: Basic am9objpzZWNyZXQ=

Die Dekodierung von am9objpzZWNyZXQ= ergibt john:secret.

JSON- und XML-Nutzdaten

Wenn Sie binäre Daten (wie einen Dateiupload, einen kryptografischen Schlüssel oder eine Bildvorschau) in JSON- oder XML-Nutzdaten einfügen müssen, ist Base64 der Standardansatz. Die binären Daten werden in einen Base64-String umgewandelt und als Eigenschaftswert eingefügt:

{
  "filename": "photo.jpg",
  "data": "/9j/4AAQSkZJRgABAQAAAQABAAD//gA..."
}

E-Mail-Anhänge (MIME)

Der MIME-Standard (Multipurpose Internet Mail Extensions) verwendet Base64 zur Kodierung von E-Mail-Anhängen. Wenn Sie eine E-Mail mit einem angehängten Bild senden, konvertiert Ihr E-Mail-Client das Bild in Base64, verpackt es in die entsprechenden MIME-Header und fügt es in den E-Mail-Text ein. Der empfangende E-Mail-Client dekodiert das Base64 zurück in die ursprüngliche Bilddatei.

JWT-Tokens

JSON Web Tokens (JWTs) verwenden eine URL-sichere Variante von Base64 namens Base64URL zur Kodierung des Headers und der Nutzdaten. Base64URL ersetzt + durch - und / durch _ und entfernt das =-Padding. Das Ergebnis ist ein kompaktes, URL-sicheres Token, das Authentifizierungs- und Autorisierungsinformationen enthält.

Kodieren und Dekodieren im Code

Die meisten Programmiersprachen bieten integrierte Funktionen für die Base64-Kodierung und -Dekodierung.

JavaScript (Browser)

// Kodierung
const encoded = btoa('Hello, World!');
console.log(encoded); // "SGVsbG8sIFdvcmxkIQ=="

// Dekodierung
const decoded = atob(encoded);
console.log(decoded); // "Hello, World!"

Node.js

const encoded = Buffer.from('Hello, World!').toString('base64');
console.log(encoded); // "SGVsbG8sIFdvcmxkIQ=="

const decoded = Buffer.from(encoded, 'base64').toString('utf-8');
console.log(decoded); // "Hello, World!"

Python

import base64

encoded = base64.b64encode(b'Hello, World!')
print(encoded)  # b'SGVsbG8sIFdvcmxkIQ=='

decoded = base64.b64decode(encoded)
print(decoded)  # b'Hello, World!'

PHP

$encoded = base64_encode('Hello, World!');
echo $encoded; // "SGVsbG8sIFdvcmxkIQ=="

$decoded = base64_decode($encoded);
echo $decoded; // "Hello, World!"

Größen-Overhead

Die Base64-Kodierung erhöht die Datengröße um etwa 33 Prozent. Pro 3 Bytes Eingabe erzeugt Base64 4 Bytes Ausgabe. Dieser Overhead ist der Preis dafür, binäre Daten für textbasierte Systeme sicher zu machen.

Für praktische Zwecke wird eine 1 MB große Binärdatei nach der Base64-Kodierung zu etwa 1,37 MB. Bevor Sie eine große Datenmenge Base64-kodieren, sollten Sie prüfen, ob der Kodierungs-Overhead für Ihren Anwendungsfall akzeptabel ist. Bei kleinen Datenmengen (Symbole, Tokens, kurze Nachrichten) ist der Overhead vernachlässigbar. Bei großen Dateien (Fotos, Videos, Archive) kann der Overhead erheblich sein, und alternative Ansätze sollten in Betracht gezogen werden.

Varianten von Base64

Das oben beschriebene Standard-Base64-Alphabet ist nicht die einzige Variante. Verschiedene Anwendungen verwenden leicht unterschiedliche Alphabete, um ihren spezifischen Anforderungen gerecht zu werden.

Base64URL ersetzt + durch - und / durch _ und lässt das Padding weg. Diese Variante ist sicher für die Verwendung in URLs und Dateinamen ohne zusätzliche Kodierung. Sie wird von JWTs, OAuth-Tokens und Webkryptografie-APIs verwendet.

MIME-Base64 ist die in E-Mails verwendete Variante und enthält alle 76 Zeichen einen Zeilenumbruch, um die E-Mail-Zeilenlängenbeschränkungen einzuhalten.

PEM (Privacy-Enhanced Mail) verwendet Base64-Kodierung mit Kopf- und Fußzeilen (-----BEGIN CERTIFICATE-----) zur Kodierung von X.509-Zertifikaten, privaten Schlüsseln und anderen kryptografischen Objekten.

Warum keine Verschlüsselung?

Base64 ist keine Verschlüsselung. Es ist ein Kodierungsschema, das heißt, es kann ohne Schlüssel einfach dekodiert werden. Der Algorithmus ist öffentlich spezifiziert, das Alphabet ist festgelegt, und jeder Entwickler kann einen Base64-String in Minuten mit integrierten Funktionen dekodieren.

Verwenden Sie Base64 niemals zum Schutz sensibler Daten. Base64 bietet keine Vertraulichkeit, keine Integrität und keine Authentifizierung. Wenn Sie Daten vor unbefugtem Zugriff schützen müssen, verwenden Sie geeignete Verschlüsselungsalgorithmen wie AES (symmetrisch) oder RSA (asymmetrisch). Wenn Sie überprüfen müssen, dass Daten nicht manipuliert wurden, verwenden Sie eine kryptografische Hash-Funktion wie SHA256 in Kombination mit einer digitalen Signatur oder HMAC.

Ein häufiger Fehler von Einsteigern ist die Annahme, Base64 sei eine Form der Verschlüsselung, weil die Ausgabe wie zufällige Zeichen aussieht. In Wirklichkeit ist Base64 trivial umkehrbar und bietet keinerlei Sicherheit. Verwenden Sie für Sicherheitszwecke immer etablierte kryptografische Algorithmen und heben Sie sich Base64 für seinen vorgesehenen Zweck auf: die sichere Kodierung binärer Daten für den textbasierten Transport.


About this article

Lernen Sie, was Base64-Kodierung ist, wie sie funktioniert und warum Entwickler sie verwenden. Ein einsteigerfreundlicher Leitfaden mit praktischen Beispielen.


Related Articles


Related Tools

Help2Code Logo
Menu