Heute Nachmittag wurde ich wieder von einem Datenproblem ziemlich gequält. Der Kunde hat eine Datei importiert, die angeblich verschlüsselt sei und sich nicht öffnen ließe. Als ich das Format sah, war mir sofort klar – das ist doch Base64, keine Verschlüsselung, sondern nur eine Hülle, die einschüchternd wirkt.
Ehrlich gesagt, dieses Base64-Ding ist in unserer Branche ein Fluch und ein Segen zugleich. Man mag es, weil es einfach und direkt ist – es verwandelt binäre Daten in eine Reihe von ordentlich aussehenden Textzeichen, die überall ohne Kodierungsprobleme übertragen werden können. Man hasst es, weil es immer wieder als Verschlüsselung missverstanden wird, als ob es etwas Geheimnisvolles wäre. Heute hätte ich ohne dieses Wissen dem Kunden wieder lange erklären müssen: „Das ist keine Verschlüsselung, das ist Kodierung.“
Die Sache war so: Der Kunde schickte eine CSV-Datei, in der eine Spalte lauter Strings mit dem Präfix „U2FsdGVkX1+...“ enthielt. Der Kunde sagte, das seien automatisch generierte „verschlüsselte Passwörter“ ihres Systems, die nun in ein neues System migriert werden sollten, aber das neue System sie nicht akzeptierte. Als ich den Anfang sah, musste ich fast lachen – das ist doch das typische Base64-Merkmal! Ich fügte es in ein Online-Tool ein, klickte auf Dekodieren, und siehe da: Es war einfach ein normaler UTF-8-Text, keine Verschlüsselung.
Eigentlich bin ich dieser Situation schon zu oft begegnet. Viele Leute unterscheiden nicht zwischen „Kodierung“ und „Verschlüsselung“. Base64 ist im Wesentlichen eine Kodierungsmethode, die 8-Bit-Bytes in 6-Bit-druckbare Zeichen umwandelt. Es hat keinen Schlüssel, jeder kann es dekodieren. Aber weil es wie Kauderwelsch aussieht, wird es oft als „Pseudo-Verschlüsselung“ verwendet. Heute hätte ich ohne meine Vertrautheit mit diesem Muster bis zum Feierabend raten müssen.
Ein anderes Mal behandelte ich ein Problem mit Bild-Uploads. Das Frontend konvertierte Bilder in Base64-Strings und warf sie direkt an das Backend. Als das Backend sie in der Datenbank speicherte, wurden die Strings so lang, dass sie fast die Tabellenstruktur sprengten. Später brachte ich ihm bei, native Binärströme zu verwenden, und das Problem war sofort gelöst. Base64 ist zwar praktisch, hat aber einen fatalen Nachteil – das Volumen wächst um etwa 33 %. Bei größeren Bildern kann die Stringlänge erschreckend sein.
Aber andererseits: Für diesen heutigen Auftrag muss ich Base64 wirklich danken. Ohne diese „idiotensichere“ Kodierungsmethode hätte ich den Dateninhalt nicht so schnell bestätigen können. Ich musste nicht einmal ein Skript schreiben, sondern fand einfach ein Dekodierungs-Tool im Web und sah den Inhalt in Sekunden. Wäre es echte Verschlüsselung gewesen, hätte ich heute Überstunden machen müssen.
Also, siehst du – Werkzeuge sind an sich nicht gut oder schlecht, entscheidend ist, ob man sie versteht. Base64 ist wie ein Universalschlüssel: Es schließt keine Türen ab, aber es kann viele scheinbar verschlossene Türen öffnen. Mein Rat an alle Kollegen: Wenn du auf einen String stößt, der „wie Kauderwelsch aussieht, aber Muster hat“, gerate nicht in Panik. Kopiere einen Teil und wirf ihn in einen Base64-Dekoder – in neun von zehn Fällen sparst du dir eine halbe Stunde Fehlersuche. Heute hat es wieder mein Leben gerettet. Wenn du an der Reihe bist, vergiss diesen Trick nicht.