base64 -d デコードが入力が無効であることを示します。

base64 -d デコードが入力が無効であることを示します。

なぜこれが起こり、解決策を知っている人がいますか?

me@box:~$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQ" | base64 -di
{"foo":"bar","baz":"bat"}base64: invalid input

ベストアンサー1

逆にすると、文字列が不完全であることがわかります。

$ echo '{"foo":"bar","baz":"bat"}' | base64
eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=

$ echo "eyJmb28iOiJiYXIiLCJiYXoiOiJiYXQifQo=" | base64 -di
{"foo":"bar","baz":"bat"}

抜粋入力長を3で割ることができない場合base64エンコーディングにパディングが必要なのはなぜですか?

フィラー文字とは何ですか?

パディング文字は長さの要件を満たすのに役立ちますが、意味はありません。

ただし、パディングは、非常に単純なネットワークプロトコルで発生する可能性があるように、Base64でエンコードされた文字列が個々のシーケンスの長さが失われるように接続される状況で役立ちます。

埋められていない文字列を連結すると、個々のシーケンスの終わりにある奇数バイトに関する情報が失われるため、元のデータを回復できません。ただし、パディングシーケンスを使用すると、あいまいさがなく、シーケンス全体を正確にデコードできます。

おすすめ記事