Preskoči na vsebino
TextArray

Razloženo kodiranje Base64: kaj je in kdaj ga uporabiti

Blog /

Base64 je povsod v spletnem razvoju – vdelan v glave e-pošte, zapečen v podatkovne URI-je, uporabljen v žetonih za preverjanje pristnosti in ovit okoli binarnih datotek v besedilnih protokolih. Toda kaj je v resnici? In če kodira podatke, ali ni zaradi tega varen? Odgovor je ne: Base64 je kodiranje, ne šifriranje. To je način za predstavitev binarnih ali poljubnih podatkov kot navadnega besedila ASCII, nič drugega. Razumevanje, kdaj in zakaj ga uporabiti, lahko razjasni veliko zmedenih trenutkov v razvoju.

Kaj je Base64?

Base64 je metoda kodiranja binarnih podatkov v 64 varnih znakov ASCII – črke A–Z, a–z, števke 0–9, znake plus in poševnice. Deluje tako, da sprejme binarni vnos (bodisi besedilo, slike ali neobdelane bajte) in ga razdeli na 6-bitne dele. Vsak kos postane indeks v abecedi Base64, tako da je rezultat vedno berljivo besedilo. "64" se nanaša na velikost abecede: 26 + 26 + 10 + 2 = 64 znakov.

Zakaj 64? Ker so ti znaki varni v skoraj vseh sistemih – e-pošti, starih terminalih, XML, JSON in navadnem besedilu. Binarna datoteka se lahko med prenosom poškoduje, če so posebni bajti napačno interpretirani; Base64 zagotavlja, da izhod nespremenjen preživi skozi kateri koli kanal, ki temelji na besedilu. Lahko kodirajo in dekodirajo Base64 takoj v vašem brskalniku, ne da bi kamor koli naložili svoje podatke.

Base64 ni šifriranje

To je ključna razlika: Base64 kodira videz podatkov, vendar ga lahko vsak spremeni. Če kodirate geslo Base64 secret123, postane c2VjcmV0MTIz — vendar to ni varno. Dekodiranje je prav tako nepomembno. Base64 je zamegljenost za prenos in ne zaščita za varnost. Če morate podatke ohraniti tajne, uporabite šifriranje (na primer AES), ne Base64. Base64 je način varnega pošiljanja šifriranih podatkov prek besedilnega kanala, vendar to ni samo šifriranje.

Pogoste uporabe Base64

Base64 je standard v več realnih scenarijih:

  1. URI podatkov. Namesto povezave do slikovne datoteke lahko sliko vdelate neposredno v HTML ali CSS kot podatkovni URI: data:image/png;base64,iVBORw0KG…. S tem se izognete dodatni zahtevi HTTP, kar je uporabno za majhne ikone ali kadar sredstev ni mogoče gostiti ločeno.
  2. E-poštne priloge. SMTP (e-poštni protokol) je bil zasnovan za besedilo. Binarne priloge so pred pošiljanjem kodirane z Base64, nato pa jih vaš poštni odjemalec dekodira ob prejemu.
  3. Žetoni za preverjanje pristnosti. Mnogi API-ji uporabljajo Base64 za žetone – ne zaradi varnosti, temveč zato, ker so žetoni pogosto binarni podatki, ki jih je treba prenesti kot berljivo besedilo v glavah ali URL-jih.
  4. Vdelava datotek v JSON ali XML. Če morate v odgovor JSON API vključiti binarno blob (PDF, preglednico, arhiv), ga Base64 kodira kot niz, ki ne poruši strukture JSON.

Povečanje velikosti: Base64 poveča podatke

Slaba stran: izhod Base64 je približno 33 % večji od prvotne binarne datoteke. To je zato, ker pakirate 8 bitov vnosa v 6-bitne kose in je potrebno polnjenje, ko dolžina vnosa ni večkratnik 3. Torej, če vdelate 300 KB veliko sliko kot podatkovni URI, je različica Base64 približno 400 KB – počasnejša za nalaganje in razčlenjevanje. Za majhne ikone je ta strošek vreden shranjene zahteve HTTP; za velike datoteke je običajno bolje, da jih povežete ločeno.

Različice in sorodna kodiranja

Standardna uporaba Base64 + in /, ki imajo posebne pomene v URL-jih in imenih datotek. URL-varen Base64 nadomestki - in _ namesto tega je varen za uporabo v poteh in nizih poizvedb brez odstotnega kodiranja. Če gradite shemo kodiranja URL-jev po meri, razmislite, ali URL kodiranje ali URL-varen Base64 ustreza vašim potrebam.

Base64 je eno od številnih kodiranj, ki rešujejo različne težave. Šestnajstiško kodiranje predstavlja binarno kot dva berljiva znaka na bajt (počasneje za dekodiranje, vendar brez oblazinjenja in človeku berljivo), pogosto uporabljeno v zgoščenih vrednostih in kontrolnih vsotah. entitete HTML kodirajo posebne znake, kot je < in & tako da se pravilno prikažejo na spletnih straneh – drugačna težava kot pri poljubnem binarnem transportu. Vsako kodiranje je orodje za določeno delo.

`,