Se fai il contrario, noterai che la stringa non è completa:
$ echo '{"foo":"bar","baz":"bat"}' | base64
eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=
$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=" | base64 -di
{"foo":"bar","baz":"bat"}
Estratti di Perché la codifica base64 richiede il riempimento se la lunghezza di input non è divisibile per 3?
Cosa sono i caratteri di riempimento?
I caratteri di riempimento aiutano a soddisfare i requisiti di lunghezza e non hanno alcun significato.
Tuttavia, il riempimento è utile in situazioni in cui le stringhe codificate in base64 sono concatenate in modo tale che le lunghezze delle singole sequenze vengano perse, come potrebbe accadere, ad esempio, in un protocollo di rete molto semplice.
Se le stringhe non imbottite vengono concatenate, è impossibile recuperare i dati originali perché le informazioni sul numero di byte dispari alla fine di ogni singola sequenza vengono perse. Tuttavia, se vengono utilizzate sequenze imbottite, non c'è ambiguità e la sequenza nel suo insieme può essere decodificata correttamente.
Lo strumento della riga di comando è schizzinoso riguardo alla presenza di caratteri di riempimento. Quella stringa è lunga 34 caratteri, quindi dovrebbero esserci due =
segni come riempimento alla fine.
$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQ==" | base64 -di; echo
{"foo":"bar","baz":"bat"}