Preskoči na sadržaj
TextArray

Base64 kodiranje objašnjeno: što je to i kada ga koristiti

Blog /

Base64 je posvuda u web razvoju - ugrađen u zaglavlja e-pošte, zapečen u podatkovne URI-je, korišten u autentifikacijskim tokenima i omotan oko binarnih datoteka u tekstualnim protokolima. Ali što je zapravo? A ako šifrira podatke, ne čini li ih to sigurnim? Odgovor je ne: Base64 je kodiranje, a ne enkripcija. To je način predstavljanja binarnih ili proizvoljnih podataka kao običnog ASCII teksta, ništa više. Razumijevanje kada i zašto ga koristiti može razjasniti mnoge zbunjujuće trenutke u razvoju.

Što je Base64?

Base64 je metoda kodiranja binarnih podataka u 64 sigurna ASCII znaka — slova A–Z, a–z, znamenke 0–9, znakove plus i kose crte. Radi tako da uzima binarni unos (bez obzira na to je li riječ o tekstu, slikama ili neobrađenim bajtovima) i razbija ga na 6-bitne dijelove. Svaki dio postaje indeks u abecedi Base64, tako da je izlaz uvijek čitljiv tekst. "64" se odnosi na veličinu abecede: 26 + 26 + 10 + 2 = 64 znaka.

Zašto 64? Zato što su ti znakovi sigurni u gotovo svim sustavima — e-pošta, stari terminali, XML, JSON i običan tekst. Binarna datoteka može se oštetiti u prijenosu ako se posebni bajtovi pogrešno protumače; Base64 jamči da izlaz ostaje nepromijenjen kroz bilo koji tekstualni kanal. možete kodirati i dekodirati Base64 odmah u vašem pregledniku bez učitavanja podataka bilo gdje.

Base64 nije enkripcija

Ovo je kritična razlika: Base64 kodira izgled podataka, ali svatko to može obrnuti. Ako zaporku kodirate Base64 secret123, postaje c2VjcmV0MTIz — ali to nije sigurno. Dekodiranje je jednako trivijalno. Base64 je maska za prijenos, a ne zaštita za sigurnost. Ako podatke trebate čuvati u tajnosti, koristite enkripciju (poput AES), a ne Base64. Base64 je način na koji sigurno šaljete šifrirane podatke putem tekstualnog kanala, ali to nije sama enkripcija.

Uobičajene upotrebe Base64

Base64 je standard u nekoliko scenarija stvarnog svijeta:

  1. URI-ji podataka. Umjesto povezivanja na slikovnu datoteku, sliku možete ugraditi izravno u HTML ili CSS kao podatkovni URI: data:image/png;base64,iVBORw0KG…. Time se izbjegava dodatni HTTP zahtjev, što je korisno za male ikone ili kada se sredstva ne mogu zasebno hostirati.
  2. privici e-pošte. SMTP (protokol e-pošte) dizajniran je za tekst. Binarni privici su Base64-kodirani prije slanja, a zatim ih dekodira vaš klijent e-pošte po primitku.
  3. Tokeni za autentifikaciju. Mnogi API-ji koriste Base64 za tokene — ne zbog sigurnosti, već zato što su tokeni često binarni podaci koji se trebaju prenijeti kao čitljiv tekst u zaglavljima ili URL-ovima.
  4. Ugrađivanje datoteka u JSON ili XML. Ako trebate uključiti binarni blob (PDF, proračunsku tablicu, arhivu) u JSON API odgovor, Base64 ga kodira kao niz koji neće razbiti JSON strukturu.

Dodatna veličina: Base64 povećava podatke

Loša strana: izlaz Base64 je oko 33% veći od izvornog binarnog. To je zato što pakirate 8 bitova ulaza u 6-bitne dijelove, a ispuna je potrebna kada duljina unosa nije višekratnik broja 3. Dakle, ako ugrađujete sliku od 300 KB kao podatkovni URI, verzija Base64 je otprilike 400 KB — sporije se učitava i analizira. Za male ikone ovo opterećenje vrijedi spremljenog HTTP zahtjeva; za velike datoteke obično ih je bolje zasebno povezati.

Varijante i srodna kodiranja

Standardna upotreba Base64 + i /, koji imaju posebna značenja u URL-ovima i nazivima datoteka. URL-safe Base64 zamjene - i _ umjesto toga, što ga čini sigurnim za upotrebu u stazama i nizovima upita bez postotnog kodiranja. Ako gradite prilagođenu shemu kodiranja URL-a, razmislite hoćete li URL kodiranje ili URL-safe Base64 odgovara vašim potrebama.

Base64 jedno je od nekoliko kodiranja koja rješavaju različite probleme. Heksadecimalno kodiranje predstavlja binarno kao dva čitljiva znaka po bajtu (sporiji za dekodiranje, ali bez ispune i čitljiv za čovjeka), često se koristi u hashovima i kontrolnim zbrojevima. HTML entiteti kodirati posebne znakove poput < i & tako da se ispravno prikazuju na web stranicama — drugačiji problem od proizvoljnog binarnog prijenosa. Svako kodiranje je alat za određeni posao.

`,