Wenn Sie es umgekehrt machen, werden Sie feststellen, dass die Zeichenfolge nicht vollständig ist:
$ echo '{"foo":"bar","baz":"bat"}' | base64
eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=
$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=" | base64 -di
{"foo":"bar","baz":"bat"}
Auszüge aus Warum erfordert die Base64-Codierung Auffüllungen, wenn die Eingabelänge nicht durch 3 teilbar ist?
Was sind Füllzeichen?
Füllzeichen helfen, die Längenanforderungen zu erfüllen, und haben keine Bedeutung.
Das Auffüllen ist jedoch in Situationen nützlich, in denen base64-codierte Zeichenfolgen so verkettet werden, dass die Länge der einzelnen Sequenzen verloren geht, wie dies beispielsweise in einem sehr einfachen Netzwerkprotokoll passieren kann.
Wenn nicht aufgefüllte Zeichenfolgen verkettet werden, ist es unmöglich, die ursprünglichen Daten wiederherzustellen, da Informationen über die Anzahl der ungeraden Bytes am Ende jeder einzelnen Sequenz verloren gehen. Wenn jedoch aufgefüllte Sequenzen verwendet werden, gibt es keine Mehrdeutigkeit, und die Sequenz als Ganzes kann korrekt dekodiert werden.
Das Befehlszeilentool ist wählerisch in Bezug auf das Vorhandensein von Füllzeichen. Dieser String ist 34 Zeichen lang, also sollte es zwei =
geben Zeichen als Polsterung am Ende.
$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQ==" | base64 -di; echo
{"foo":"bar","baz":"bat"}