Sări la conținut
TextArray

Codificarea Base64 explicată: ce este și când să o folosești

Blog /

Base64 este peste tot în dezvoltarea web - încorporat în anteturile de e-mail, încorporat în URI-uri de date, folosit în jetoane de autentificare și înfășurat în jurul fișierelor binare în protocoale text. Dar ce este, de fapt? Și dacă amestecă datele, asta nu le face sigure? Răspunsul este nu: Base64 este codificare, nu criptare. Este o modalitate de a reprezenta datele binare sau arbitrare ca text simplu ASCII, nimic mai mult. Înțelegerea când și de ce să-l folosești poate clarifica o mulțime de momente confuze în dezvoltare.

Ce este Base64?

Base64 este o metodă de codificare a datelor binare în 64 de caractere ASCII sigure - literele A–Z, a–z, cifrele 0–9, plus semnele și barele oblice. Funcționează luând intrare binară (fie text, imagini sau octeți bruti) și împărțind-o în bucăți de 6 biți. Fiecare bucată devine un index în alfabetul Base64, astfel încât rezultatul este întotdeauna text care poate fi citit. „64” se referă la dimensiunea alfabetului: 26 + 26 + 10 + 2 = 64 de caractere.

De ce 64? Deoarece aceste caractere sunt sigure în aproape toate sistemele - e-mail, terminale vechi, XML, JSON și text simplu. Un fișier binar se poate deteriora în tranzit dacă octeții speciali sunt interpretați greșit; Base64 garantează că rezultatul supraviețuiește neschimbat prin orice canal bazat pe text. Puteți codifică și decodifică Base64 instantaneu în browser, fără a încărca datele oriunde.

Base64 nu este criptare

Aceasta este distincția critică: Base64 amestecă aspectul datelor, dar oricine îl poate inversa. Dacă codificați în Base64 parola secret123, devine c2VjcmV0MTIz — dar asta nu este sigur. Decodarea este la fel de banala. Base64 este o ofuscare pentru transmisie, nu protecție pentru securitate. Dacă trebuie să păstrați datele secrete, utilizați criptarea (cum ar fi AES), nu Base64. Base64 este modul în care trimiteți în siguranță date criptate printr-un canal de text, dar nu este criptarea în sine.

Utilizări obișnuite ale Base64

Base64 este standard în mai multe scenarii din lumea reală:

  1. URI de date. În loc să conectați la un fișier imagine, puteți încorpora imaginea direct în HTML sau CSS ca URI de date: data:image/png;base64,iVBORw0KG…. Acest lucru evită o solicitare HTTP suplimentară, utilă pentru pictogramele mici sau atunci când activele nu pot fi găzduite separat.
  2. Atașamente de e-mail. SMTP (protocolul de e-mail) a fost conceput pentru text. Atașamentele binare sunt codificate în Base64 înainte de a fi trimise, apoi sunt decodate de clientul dvs. de e-mail la primire.
  3. Jetoane de autentificare. Multe API-uri folosesc Base64 pentru token-uri – nu pentru securitate, ci pentru că token-urile sunt adesea date binare care trebuie transmise ca text lizibil în anteturi sau URL-uri.
  4. Încorporarea fișierelor în JSON sau XML. Dacă trebuie să includeți un blob binar (un PDF, o foaie de calcul, o arhivă) într-un răspuns API JSON, Base64 îl codifică ca șir care nu va rupe structura JSON.

Dimensiunea generală: Base64 mărește datele

Un dezavantaj: ieșirea Base64 este cu aproximativ 33% mai mare decât binarul original. Acest lucru se datorează faptului că împachetați 8 biți de intrare în bucăți de 6 biți, iar umplutura este necesară atunci când lungimea de intrare nu este un multiplu de 3. Deci, dacă încorporați o imagine de 300 KB ca URI de date, versiunea Base64 este de aproximativ 400 KB - mai lent de încărcat și analizat. Pentru pictogramele mici, această suprasarcină merită solicitarea HTTP salvată; pentru fișiere mari, de obicei este mai bine să le legați separat.

Variante și codificări aferente

Utilizări standard Base64 + şi /, care au semnificații speciale în adrese URL și nume de fișiere. Base64 sigură pentru adrese URL înlocuitori - şi _ în schimb, făcându-l sigur pentru utilizare în căi și șiruri de interogări fără codificare procentuală. Dacă construiți o schemă de codificare URL personalizată, luați în considerare dacă codificare URL sau Base64 cu siguranță URL se potrivește nevoilor dvs.

Base64 este una dintre numeroasele codificări care rezolvă diferite probleme. Codificare hexazecimală reprezintă binar ca două caractere care pot fi citite pe octet (mai lent de decodat, dar fără umplutură și care pot fi citite de om), adesea folosite în hashe-uri și sume de control. entități HTML codifică caractere speciale cum ar fi < şi & astfel încât acestea se afișează corect în paginile web — o problemă diferită de transportul binar arbitrar. Fiecare codificare este un instrument pentru un anumit loc de muncă.

`,