Hva er Base64? Base64-koding forklart
· 5 min lesing · Tools-Bench Guider
Base64 er overalt når du først vet hvordan du kjenner det igjen: de lange strengene med A–Z, a–z og 0–9 som slutter på = i kildekoden til e-poster, data:-URL-er på nettsider, JWT-tokens og API-svar. Det løser ett smalt, gammelt problem — å flytte binærdata gjennom systemer som bare håndterer tekst — og det løser det så enkelt at det har overlevd alle systemene det ble laget for.
Det er også et av de mest misforståtte verktøyene i databehandling, farligst når det forveksles med kryptering. Her er hva det faktisk gjør.
Problemet Base64 løser
Mye av infrastrukturen på internett ble laget for ren tekst. Tidlig e-post kunne bare frakte 7-bits ASCII-tegn; JSON og XML kan ikke bygge inn rå byte; URL-er tåler ikke kontrolltegn. Men ekte data — bilder, PDF-er, krypteringsnøkler — er binære: vilkårlige byte, og de fleste av dem er ikke engang tegn som kan skrives ut.
Base64 bygger bro ved å uttrykke vilkårlige byte med bare 64 tegn som er trygge overalt: A–Z, a–z, 0–9, + og /. Enhver binærfil kan gjøres om til en streng som overlever e-post, JSON, XML eller en kopiering gjennom et chattevindu — og dekodes tilbake til nøyaktig de samme bytene på den andre siden.
Slik fungerer det (i ett avsnitt)
Koderen tar inndataene tre byte om gangen — 24 biter — og deler dem opp på nytt i fire grupper på 6 biter. Hver 6-bitsverdi (0–63) peker på et tegn i alfabetet på 64 tegn, slik at hver tredje byte inn blir nøyaktig fire tegn ut. Når inndataene ikke går opp i et multiplum av tre byte, fylles resultatet ut med ett eller to likhetstegn — derfor slutter Base64-strenger så ofte slik, og derfor er lengden alltid delelig med fire.
Den uunngåelige kostnaden er størrelsen: fire tegn ut for hver tredje byte inn betyr at Base64-data er 33 % større enn originalen. Det er hovedgrunnen til ikke å Base64-kode ting som ikke trenger det.
Hvor du møter det
Steder der Base64 dukker opp hver dag:
- E-postvedlegg — alle vedlegg som noen gang er sendt, er Base64-kodet inne i meldingen (MIME).
- Data-URL-er — små bilder bygd rett inn i HTML/CSS som data:image/png;base64,….
- JWT-er — headeren og innholdet i hvert JSON Web Token er Base64url-kodet JSON.
- API-nøkler og innloggingsdata — HTTP Basic-autentisering er base64(brukernavn:passord), og mange hemmeligheter distribueres innpakket i Base64.
- Konfigurasjonsfiler og sertifikater — PEM-sertifikatfiler er Base64-kodede DER-data mellom BEGIN- og END-markører.
Base64 er ikke kryptering
Dette er poenget som fører til ekte sikkerhetshendelser. Base64 har ingen nøkkel og ingen hemmelighet — for å dekode trenger du bare å vite at det er Base64, noe enhver utvikler, ethvert verktøy og enhver angriper ser med en gang. Å Base64-kode et passord eller en API-nøkkel gir null beskyttelse; det tilsvarer å skrive det med et annet alfabet.
Misforståelsen holder seg fordi kodede data ser kryptiske ut for mennesker. Testen er enkel: kan alle som har strengen, hente ut dataene med et gratis verktøy på nett, er de ikke beskyttet. HTTP Basic-autentisering er for eksempel bare trygg fordi HTTPS krypterer hele forespørselen — Base64-delen inni er bare en formateringskonvensjon.
En beslektet variant verdt å kjenne til er Base64url, som brukes i JWT-er og på nettet: den bytter ut + og / med - og _, slik at resultatet er trygt inne i URL-er uten ekstra koding.
Trygg koding og dekoding
Å dekode en Base64-streng du fant i en konfigurasjonsfil, et API-svar eller et token, er en daglig oppgave for utviklere. Base64-verktøyet i Tools-Bench koder og dekoder tekst helt i nettleseren — ingenting du limer inn, sendes til noen server. Det betyr noe, fordi strengene folk dekoder, så ofte er innloggingsdata, tokens og andre hemmeligheter som aldri burde havne i forespørselsloggene til et annet nettsted.
Ofte stilte spørsmål
Hvorfor slutter Base64-strengen min med ett eller to likhetstegn?
Det er utfylling. Inndata som ikke går opp i et multiplum av tre byte, gjør den siste gruppen for kort, og = fyller opp: én byte til overs gir ==, to byte til overs gir =. Noen varianter (som Base64url i JWT-er) dropper utfyllingen helt.
Komprimerer Base64 data?
Tvert imot — det gjør dataene 33 % større. Betyr størrelsen noe, bør du komprimere først og deretter kode de komprimerte bytene.
Hvordan ser jeg om en streng er Base64?
Bare tegn fra A–Z, a–z, 0–9, + og / (eller - og _ for Base64url), en lengde som er delelig med fire, og kanskje et = til slutt. Den sikre testen er rett og slett å dekode den og se om resultatet gir mening.