Čemu služi Base64
Base64 pretvara bilo koje bajtove u tekst koristeći 64 bezbedna znaka: A–Z, a–z, 0–9, + i /. Svaka 3 bajta (24 bita) postaju 4 znaka od po 6 bitova, pa je izlaz za trećinu veći od ulaza. Postoji zato što mnogi kanali, uključujući e-poštu, JSON, XML, HTTP zaglavlja i URL-ove, mogu da prenose samo tekst, a sirovi bajtovi bi bili oštećeni ili pogrešno protumačeni.
- Uzmite 3 bajta: 24 bita.
- Podelite ih u četiri grupe od 6 bitova (vrednosti 0–63).
- Zamenite svaku grupu njenim znakom iz alfabeta.
- Ako dužina ulaza nije deljiva sa 3, dopunite poslednju grupu nultim bitovima i dodajte jedan ili dva znaka
=.
hi je 0x68 0x69 = 01101000 01101001; pregrupisano kao 011010 000110 1001(00) to je 26, 6, 36 → aGk, plus jedan = za bajt koji nedostaje: aGk=.
Standardni i URL-safe
Znakovi + i / imaju posebno značenje u URL-ovima i imenima datoteka, pa RFC 4648 §5 definiše drugi alfabet koji umesto njih koristi - i _, obično bez paddinga. JWT-ovi, OAuth tokeni i mnogi API-ji koriste ovaj „base64url“ oblik. Dekoder ovde prihvata oba, sa paddingom ili bez njega, i ignoriše prelome redova.
Nije šifrovanje
Base64 ne krije ništa; svako može da ga dekodira istog trenutka. Koristite ga za prenos bajtova, nikada za njihovu zaštitu. Ako u konfiguracionoj datoteci vidite tajnu „kodiranu“ u Base64, tretirajte je kao običan tekst.
Kodiranje teksta
Base64 radi nad bajtovima, pa tekst prvo mora da se pretvori u bajtove. Ovaj alat koristi UTF-8, što očekuju veb API-ji, JSON i gotovo sav moderan softver. Dekodirani rezultat koji nije ispravan UTF-8 prikazuje se kao heks umesto kao besmisleni znakovi.
Pitanja
Zašto se moj Base64 završava sa = ili ==?
Padding. Dužina ulaza nije bila deljiva sa 3 bajta, pa je poslednji blok dopunjen. Jedan = znači da su u poslednjoj grupi bila dva bajta; == znači jedan. Mnogi dekoderi prihvataju unos bez paddinga, a URL-safe varijanta ga obično izostavlja.
Da li je Base64 bezbedan?
Ne. To je kodiranje, a ne šifrovanje; svako može da ga obrne. Štiti podatke od oštećenja u prenosu, a ne od čitanja.
Koliko Base64 uvećava datoteku?
Oko 33% (4 izlazna bajta na svaka 3 ulazna), plus do 3% više ako se redovi prelamaju za MIME.
Zašto je moj dekodirani tekst besmislen?
Obično podaci uopšte nisu bili tekst (slika, kompresovani blob), ili je tekst bio u kodiranju različitom od UTF-8. Pogledajte heks prikaz: 89 50 4E 47 na početku je PNG, 1F 8B je gzip, 25 50 44 46 je PDF.
Šta je data: URL?
URL koji sadrži samu datoteku, npr. data:image/png;base64,iVBOR… Omogućava ugrađivanje malih slika ili fontova direktno u HTML ili CSS. Enkoder vam ga daje kad prevučete datoteku.
Da li ovaj alat otprema moju datoteku?
Ne. Datoteku čita JavaScript u vašem pregledaču i nikuda je ne šalje. Osvežite stranicu i nestaje.