base64 în Linux / Bash

Codifică date binare sau text în Base64 și le decodifică înapoi cu opțiunea -d.

Sintaxă comandă
base64 [-d] [-w COLOANE] [fișier]

Ce face base64

Base64 transformă orice șir de octeți într-un text format doar din litere, cifre, +, / și =. Este folosit când date binare trebuie să treacă prin locuri care acceptă doar text: atașamente de e-mail, fișiere JSON, antete HTTP (Authorization: Basic) sau secrete Kubernetes.

Comanda base64 codifică fișierul sau intrarea standard; cu -d decodifică. Versiunea GNU împarte rezultatul în rânduri de 76 de caractere; -w 0 scrie totul pe un singur rând. Atenție: Base64 nu este criptare, oricine poate decodifica textul.

Opțiuni și argumente

Opțiune / Parametru Descriere
-d, --decode Decodifică textul Base64 înapoi în datele originale.
-w N, --wrap=N Rupe rândurile după N caractere (implicit 76); -w 0 dezactivează ruperea.
-i, --ignore-garbage La decodificare, ignoră caracterele care nu fac parte din alfabetul Base64.

Exemple

Exemplul 1: Codificare și decodificare

printf nu adaugă rând nou, așa că se codifică exact cele trei litere. Rezultatul decodificării nu are rând nou la final, de aceea adăugăm un echo.

printf 'Ana' | base64
printf 'QW5h' | base64 -d
echo

Rezultat

QW5h
Ana

Exemplul 2: Diferența făcută de rândul nou de la final

echo adaugă \n, deci codificarea diferă. Când pui o parolă într-un fișier de configurare, folosește printf sau echo -n.

echo 'parola' | base64
printf 'parola' | base64

Rezultat

cGFyb2xhCg==
cGFyb2xh

Exemplul 3: Antet HTTP Basic Auth

Antetul Authorization: Basic conține utilizator:parola codificat Base64. Asta arată și de ce Basic Auth se folosește doar prin HTTPS.

token=$(printf 'ana:secret123' | base64)
echo "Authorization: Basic $token"
echo "$token" | base64 -d
echo

Rezultat

Authorization: Basic YW5hOnNlY3JldDEyMw==
ana:secret123

Greșeli frecvente

  • Considerarea Base64 drept metodă de protecție a parolelor: este doar o codificare reversibilă, fără cheie.
  • Folosirea lui echo în loc de printf la codificarea secretelor: rândul nou ajunge în valoare și autentificarea eșuează.
  • Rândurile rupte la 76 de caractere în GNU: într-o variabilă sau într-un fișier YAML folosește base64 -w 0.

Comenzi înrudite

  • openssl: Trusa în linie de comandă pentru hash-uri, chei, certificate TLS și verificarea certificatelor unui site.
  • sha256sum / md5sum: Calculează și verifică sume de control (SHA-256, MD5) ca să știi dacă un fișier este identic cu originalul.
  • curl: Transferă date către sau de la un server folosind protocoale web (HTTP, HTTPS, FTP, REST API).