Der Martin: base_64 ist gleich

Beitrag lesen

n'Abend,

Wenn Du ein Problem hast, musst Du es beschreiben, sonst kann Dir keiner helfen.
Das hatte ich bereits geschrieben. Was hat eine Tabelle mit 64 Zeichen damit zu tun, wenn base64 nahezu alle zeichen umwandeln kann?

ich vermute, du stehst etwas auf dem Schlauch. Also:
Bei der base64-Codierung wird die Eingabe in 3-Byte-Blöcken gelesen. 3 Byte sind 24bit. Diese 24bit werden nun nicht in 3 Blöcke zu je 8bit gruppiert, sondern in 4 Blöcke à 6bit, wie es im Wiki-Artikel sogar graphisch dargestellt wird. Für jeden dieser 6bit-Blöcke (für sich genommen also ein Zahlenwert von 0..63) wird nun ein Zeichen aus der Codiertabelle geschrieben.
Diese Tabelle enthält also nicht die Zeichen, die in base64 codiert werden können, sondern die Zeichen, die in einem base64-codierten String auftreten können.

Ich finde nicht, dass die Beschreibung bei Wikipedia Fachchinesisch ist. Ich habe mir den Artikel nochmal durchgelesen und bin der Ansicht, dass wirklich nur ein rudimentäres Vorstellungsvermögen vorausgesetzt wird, wie gespeicherte Zahlen und Daten interpretiert werden können.

Undokumentiertes Verhalten ist unverlässlich, die Verlässlichkeit dokumentierten Verhaltens lässt sich aus der Dokumentation schließen. Ist das Verhalten also dokumentiert?
Womit wir eigentlich zur Ausgangsfrage kommen, ist dieses Verhalten dokumentiert? Zumindest in der Weise, das irgendwo zu lesen wäre
"Es ist nicht zwingend erforderlich die Füllzeichen zu nutzen"

Nein. Genau das ist *nicht* dokumentiert. Der Musteralgorithmus verwendet die Füllzeichen. Wenn eine konkrete Implementierung so tolerant ist, auch ohne die Füllzeichen korrekt zu arbeiten, ist das "zufällig" so. Darauf kannst du dich aber nicht verlassen - weder für andere Plattformen, noch für zukünftige Versionen bestehender Software.

Warum sollte ich Probleme mit + oder / bekommen? Beispiel?

Du hast geschrieben, dass du die base64-Strings in Dateinamen verwenden willst. Alle mir bekannten Dateisysteme verbieten aber den Schrägstrich '/' in Dateinamen, da er als Delimiter für Verzeichnisse reserviert ist. Und es gibnt Dateisysteme, in denen auch das '+' ein verbotenes Zeichen ist (frühe DOS-Versionen gehörten dazu).

Deswegen wäre in deinem Fall eher die im letzten Absatz verlinkte und in RFC 3548 beschriebene Variante passend, bei der anstatt '+' und '/' die Zeichen '-' und '_' verwendet werden.

Ciao,
 Martin

--
Ich liebe Politiker auf Wahlplakaten.
Sie sind tragbar, geräuschlos, und leicht wieder zu entfernen.
  (Loriot, deutscher Satiriker)