GNU/Linux >> Linux Esercitazione >  >> Linux

base64 -d decodifica, ma dice input non valido

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"}

Linux
  1. Grep:contenuto non valido di {}?

  2. I "se"?

  3. Dd:file di input multipli?

  4. Opzione ABI non valida abi=aapcs-linux

  5. Top dice 100% CPU utilizzata, ma il 50% dei core è inattivo?

Come digitare emoji su Linux

Network Manager dice connettività limitata ma tutto funziona

Spiegazione del reindirizzamento di input e output su Linux

Annulla completamento, ma solo completamento, in Zsh?

Ubuntu dice 13.04 ma Lsb_release dice 12.10?

Sostituzione del processo:un modo non comune ma avanzato per il reindirizzamento di input/output in Linux