GNU/Linux >> Znalost Linux >  >> Linux

base64 -d dekóduje, ale říká neplatný vstup

Pokud to uděláte obráceně, zjistíte, že řetězec není úplný:

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

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

Výňatky z Proč kódování base64 vyžaduje výplň, pokud vstupní délka není dělitelná 3?

Co jsou výplňové znaky?

Výplňové znaky pomáhají splnit požadavky na délku a nemají žádný význam.

Výplň je však užitečná v situacích, kdy jsou řetězce zakódované v base64 zřetězeny tak, že se ztratí délky jednotlivých sekvencí, k čemuž může dojít například ve velmi jednoduchém síťovém protokolu.

Pokud jsou nevyplněné řetězce zřetězeny, není možné obnovit původní data, protože se ztratí informace o počtu lichých bajtů na konci každé jednotlivé sekvence. Pokud se však použijí vycpané sekvence, nevznikne žádná nejednoznačnost a sekvenci jako celek lze dekódovat správně.


Nástroj příkazového řádku je vybíravý, pokud jde o přítomnost výplňových znaků. Tento řetězec je dlouhý 34 znaků, takže by měly být dva = podepíše jako výplň na konci.

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

Linux
  1. Provést příkaz Nohup se vstupem?

  2. dekódovat base64:neplatný vstup

  3. postfix/dovecot říká, že nastavení postmaster_address není zadáno, ale je

  1. Grep:Neplatný obsah {}?

  2. „Kdyby“?

  3. Linux – reference, ale pro Linux?

  1. Zrušit dokončení, ale pouze dokončení, v Zsh?

  2. Dd:Více vstupních souborů?

  3. Neplatná volba ABI abi=aapcs-linux