Base64 explicat: de ce mărește datele și cum le decodezi
Base64 scrie datele binare ca text simplu, folosind 64 de caractere: de la A la Z, de la a la z, de la 0 la 9, plus + și /. Fiecare trei octeți devin patru caractere, deci textul este cu aproximativ o treime mai lung decât datele pe care le conține. Oamenii îl folosesc atunci când un format acceptă doar text, cum ar fi un URL de date într-o pagină web, un câmp JSON sau un atașament de e-mail.
De ce au nevoie formatele de text de el
Multe formate au fost create doar pentru text. Corpul unui e-mail, un fișier JSON sau un fișier CSS pot conține litere și simboluri fără probleme, dar o imagine brută sau un fișier zip conține valori de octeți pe care unele sisteme le-ar modifica, le-ar tăia sau le-ar citi ca coduri de control. Base64 folosește doar caractere pe care le trece neschimbate orice sistem de text, așa că datele ajung intacte. Este definit în RFC 4648.
Base64 este o codificare, nu un secret. Oricine îl poate decoda fără nicio cheie, așa că nu trebuie folosit niciodată ca să ascundă o parolă sau date personale.
Cum devin trei octeți patru caractere
Ia cuvântul Man, care are trei octeți: 77, 97 și 110 în zecimal. Împreună, cei trei octeți fac 24 de biți. Împarte cei 24 de biți în patru grupe de câte șase biți, și fiecare grupă este un număr de la 0 la 63, care indică un caracter din alfabet. Man devine TWFu.
Șase biți pot desemna doar 64 de valori, deci patru caractere transportă trei octeți. Rezultatul este, prin urmare, cu aproximativ o treime mai mare decât intrarea, înainte de a adăuga eventualele întreruperi de rând.
Când datele nu se împart exact la trei octeți, encoderul completează finalul cu semne =. Ma, care are doi octeți, devine TWE=, iar M, care are un octet, devine TQ==. Completarea îi spune decoderului câți octeți conține ultima grupă.
Textul trebuie întâi codificat în UTF-8
Base64 lucrează cu octeți, iar textul este format din caractere. Un caracter precum é sau ✓ este stocat în UTF-8, codificarea folosită pe web, ca mai mult de un octet. Funcția din browser btoa() primește un șir de caractere și tratează fiecare caracter ca pe un octet, deci eșuează la caractere peste intervalul latin de bază. Apelată pe un semn de bifare, aruncă o eroare InvalidCharacterError.
Soluția este să transformi mai întâi textul în octeți UTF-8, apoi să codifici acei octeți. Fraza héllo ✓ are 10 octeți în UTF-8, iar Base64 pentru ea este aMOpbGxvIOKckw==. Instrumentul Base64 face acest pas în locul tău. La decodare, citește octeții înapoi ca UTF-8. Dacă octeții nu sunt text UTF-8 valid, instrumentul îi tratează ca pe un fișier și oferă o descărcare.
Base64 compatibil cu URL-uri
Alfabetul standard conține + și /. Într-un URL, + poate reprezenta un spațiu, iar / separă părțile unei căi, deci un șir Base64 poate strica un link. Forma sigură pentru URL (RFC 4648, secțiunea 5) folosește în schimb - și _, și de obicei elimină completarea =. Folosește-o când șirul ajunge într-un URL, un nume de fișier sau un token. Decoderul acceptă ambele forme, cu sau fără completare.
Dacă Base64-ul a venit dintr-un link, decodează mai întâi URL-ul. O valoare codificată procentual într-un link trebuie decodată înainte ca Base64-ul ei să poată fi citit. Ghidul de codificare procentuală explică regulile pentru link-uri.
Un token de autentificare este cazul cel mai frecvent: un JSON Web Token este format din trei părți Base64url despărțite prin puncte, un antet, datele și o semnătură. Decodificatorul JWT le separă și afișează antetul și datele ca JSON lizibil.
URL-uri de date și imagini
Un URL de date pune fișierul chiar în link. Forma lui este data:, apoi tipul de media, apoi ;base64, apoi o virgulă și datele. O imagine mică devine data:image/png;base64, urmat de octeții codificați. Paginile web și foile de stil acceptă această formă, ceea ce economisește o cerere pentru o iconiță mică.
Costul este dimensiunea. Datele sunt cu aproximativ o treime mai mari și circulă în interiorul paginii sau al foii de stil, în loc de un fișier separat pe care browserul îl poate memora în cache. Folosește URL-uri de date pentru imagini mici, nu pentru fotografii mari. Comprimă fotografia înainte de codificare dacă este mare.
Când decodezi Base64 în instrument, acesta analizează primii octeți ai datelor. Fișierele PNG, JPEG, GIF și WebP încep fiecare cu o semnătură cunoscută, așa că instrumentul afișează o previzualizare și oferă o descărcare. Un URL de date cu tip de imagine este afișat și el ca imagine.
Cum o faci cu fixmint
- Alege Codifică sau Decodifică deasupra Text sau Base64, apoi lipește textul sau Base64-ul.
- Bifează Alfabet sigur pentru URL, fără completare cu = pentru tokenuri, nume de fișiere și link-uri. Decoderul acceptă ambele forme oricum.
- Pentru a face un URL de date dintr-un fișier, trage fișierul în zona de încărcare și bifează Pentru fișiere: returnează un URL data:.
- Copiază rezultatul. Dacă octeții decodați sunt un fișier, nu text, folosește descărcarea oferită de instrument.
Erori frecvente la decodare
- Un caracter nu este permis. Intrarea conține un caracter din afara celor 64, cum ar fi un ghilimea dintr-o frază copiată. Verifică de unde provine textul. Un spațiu de lățime zero din textul copiat provoacă aceeași eroare, așa că elimină caracterele ascunse și încearcă din nou. Ghidul despre caractere ascunse explică de unde apar.
- Lungimea este greșită. Lipsește sau există în plus un caracter, ceea ce înseamnă de obicei că textul a fost copiat trunchiat.
- Întreruperi de rând și spații. E-mailul (MIME) împarte Base64 la fiecare 76 de caractere. Decoderul elimină spațiile și întreruperile de rând, așa că poți lipi textul împărțit exact cum este.
- Completare lipsă. Unele sisteme elimină semnele =. Decoderul le adaugă la loc.
Cazuri speciale
- Rezultatul decodat pare fără sens. Poate fi un fișier, nu text. Un fișier zip, un PDF sau un program se decodează în octeți care nu se citesc ca text. Instrumentul le oferă ca descărcare.
- Intrări foarte mari. Tot fișierul este ținut în browser în timpul codificării sau decodării, deci un fișier foarte mare poate fi lent, iar pe telefon poate eșua.
Răspunsuri rapide
Este Base64 același lucru cu criptarea?
Nu. Este o codificare reversibilă, fără cheie, deci oricine o poate decoda.
De ce este Base64-ul meu mai lung decât fișierul?
Fiecare set de trei octeți devine patru caractere, deci textul este cu aproximativ o treime mai mare.
De ce nu se decodează un șir Base64 copiat?
De obicei, în timpul copierii s-a pierdut sau s-a adăugat un caracter, de exemplu o întrerupere de rând pusă greșit sau un caracter final lipsă. Copiază-l din nou de la sursă.
Tradus din Original în engleză cu ajutorul AI.
Comentarii
Încă nu sunt comentarii. Fii primul.


