Si vous faites l'inverse, vous constaterez que la chaîne n'est pas complète :
$ echo '{"foo":"bar","baz":"bat"}' | base64
eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=
$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=" | base64 -di
{"foo":"bar","baz":"bat"}
Extraits de Pourquoi l'encodage base64 nécessite-t-il un remplissage si la longueur d'entrée n'est pas divisible par 3 ?
Que sont les caractères de remplissage ?
Les caractères de remplissage aident à satisfaire aux exigences de longueur et n'ont aucune signification.
Cependant, le rembourrage est utile dans les situations où les chaînes encodées en base64 sont concaténées de telle manière que les longueurs des séquences individuelles sont perdues, comme cela pourrait arriver, par exemple, dans un protocole réseau très simple.
Si des chaînes non remplies sont concaténées, il est impossible de récupérer les données d'origine car les informations sur le nombre d'octets impairs à la fin de chaque séquence individuelle sont perdues. Cependant, si des séquences rembourrées sont utilisées, il n'y a pas d'ambiguïté et la séquence dans son ensemble peut être décodée correctement.
L'outil de ligne de commande est pointilleux sur la présence de caractères de remplissage. Cette chaîne fait 34 caractères, il devrait donc y avoir deux =
signes comme remplissage à la fin.
$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQ==" | base64 -di; echo
{"foo":"bar","baz":"bat"}