Base64 in C#: Kodierung und Dekodierung von Zeichenfolgen mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Base64 in C#: So kodieren und dekodieren Sie Zeichenfolgen ohne Kopfschmerzen

\n\n

Haben Sie jemals eine Situation erlebt, in der Sie binäre Daten über ein Textprotokoll übertragen, ein Bild in JSON senden oder einen Hash in lesbarer Form speichern mussten? Genau hier kommt Base64 ins Spiel – ein altes, bewährtes, zuverlässiges Format, das beliebige Bytes in sicheren Text umwandelt.

\n\n

Die Frage "How do I encode and decode a base64 string?" ist eine der beliebtesten auf Stack Overflow (Zehntausende von Aufrufen). Und das zu Recht: In C# scheint die Arbeit mit Base64 einfach, aber Fallstricke gibt es auf Schritt und Tritt. Heute behandeln wir alles von A bis Z: von grundlegenden Beispielen bis zu realen Produktionsfällen.

\n\n

Was ist Base64 und wozu wird es benötigt?

\n\n

Base64 ist eine Methode zur Darstellung binärer Daten (Bytes) als ASCII-Zeichenfolge. Das Alphabet besteht aus 64 Zeichen: A-Z, a-z, 0-9, plus die Zeichen '+' und '/'. Am Ende der Zeichenfolge wird oft das Zeichen '=' zur Auffüllung hinzugefügt.

\n\n

Anwendungsbereiche:

\n
    \n
  • Datenübertragung in JSON/XML – Binäre Daten können nicht direkt eingefügt werden, nur als Zeichenfolge
  • \n
  • Authentifizierung – Basic Auth verwendet Base64 zur Kodierung von Benutzername und Passwort
  • \n
  • Speicherung von Bildern in der Datenbank – Kleine Bilder werden direkt in der Datenbank als Base64 gespeichert
  • \n
  • E-Mail-Anhänge – Das MIME-Format erfordert Base64 für binäre Dateien
  • \n
\n\n

In C# ist dafür die Klasse System.Convert zuständig – Ihr wichtigstes Werkzeug für die Arbeit mit Base64.

\n\n

So kodieren Sie eine Zeichenfolge in Base64 mit C#

\n\n

Das häufigste Szenario: Sie haben eine normale Zeichenfolge (z. B. "Hallo, Welt!") und möchten deren Base64-Darstellung erhalten.

\n\n

So geht's:

\n\n
using System;\nusing System.Text;\n\nstring original = "Hello, World!";\nbyte[] bytes = Encoding.UTF8.GetBytes(original);\nstring base64 = Convert.ToBase64String(bytes);\n\nConsole.WriteLine(base64); // Ausgabe: SGVsbG8sIFdvcmxkIQ==
\n\n

Wichtiger Punkt: Base64 arbeitet mit Bytes, nicht mit Zeichenfolgen. Daher konvertieren wir zuerst die Zeichenfolge in ein Byte-Array (unter Verwendung der UTF-8-Kodierung) und kodieren dann diese Bytes.

\n\n

Warum UTF-8 und nicht etwa ASCII? Weil UTF-8 alle Unicode-Zeichen unterstützt, einschließlich Kyrillisch, Hieroglyphen und Emojis. Wenn Sie ASCII für russische Zeichenfolgen verwenden, gehen Daten verloren.

\n\n

So dekodieren Sie Base64 zurück in eine Zeichenfolge

\n\n

Der umgekehrte Prozess – die Dekodierung – sieht spiegelbildlich aus:

\n\n
using System;\nusing System.Text;\n\nstring base64 = "SGVsbG8sIFdvcmxkIQ==";\nbyte[] bytes = Convert.FromBase64String(base64);\nstring decoded = Encoding.UTF8.GetString(bytes);\n\nConsole.WriteLine(decoded); // Ausgabe: Hello, World!
\n\n

Beachten Sie: Wenn Sie die Zeichenfolge in UTF-8 kodiert haben, müssen Sie auch in UTF-8 dekodieren. Andernfalls erhalten Sie Zeichensalat.

\n\n

Arbeit mit binären Daten (Bilder, Dateien)

\n\n

Base64 beschränkt sich nicht auf Zeichenfolgen. Sie können beliebige binäre Daten kodieren – zum Beispiel ein Bild oder eine PDF-Datei.

\n\n

Beispiel: Kodieren eines Byte-Arrays in Base64

\n\n
byte[] imageBytes = File.ReadAllBytes("photo.jpg");\nstring base64Image = Convert.ToBase64String(imageBytes);\n\n// Jetzt kann die Zeichenfolge in JSON gespeichert oder über eine API gesendet werden\nConsole.WriteLine($"Länge der Base64-Zeichenfolge: {base64Image.Length} Zeichen");
\n\n

Zurück in eine Datei dekodieren:

\n\n
string base64Image = "..."; // Ihre Zeichenfolge\nbyte[] imageBytes = Convert.FromBase64String(base64Image);\nFile.WriteAllBytes("decoded_photo.jpg", imageBytes);
\n\n

Wichtig: Base64 erhöht die Datengröße um etwa 33%. Wenn Sie ein 1 MB großes Bild haben, wiegt es nach der Kodierung als Zeichenfolge ~1,33 MB.

\n\n

Typische Fehler und wie Sie sie vermeiden

\n\n

Sogar erfahrene Entwickler stolpern manchmal über Base64. Hier sind die häufigsten Fallstricke:

\n\n

Blogs

Buchempfehlungen