[GUIDE] 8 min lesing

[GUIDE] Komplett Base64 Referanse

Alt du trenger å vite om Base64-koding: teori, implementering og beste praksis.

Januar 2025 | fundamentals

// HVA ER BASE64?

Base64 er et binær-til-tekst kodingsskjema som representerer binære data ved hjelp av 64 ASCII-tegn. Det er designet for å kode binære data som må lagres og overføres via medier som er designet for tekstdata.

Base64-tegnsettet inkluderer A-Z, a-z, 0-9, og to ekstra tegn (typisk + og /), pluss = for utfylling.

// HVORDAN BASE64 FUNGERER

Base64-koding fungerer ved å ta binære data og konvertere dem til en streng med ASCII-tegn. Prosessen innebærer:

1. Del opp input i 6-bits segmenter (Base64 bruker 6 bits per tegn) 2. Koble hver 6-bits verdi til et tegn i Base64-alfabetet 3. Legg til utfylling med '='-tegn om nødvendig

// Eksempel: Koding av 'Man' til Base64
// 'M' = 01001101, 'a' = 01100001, 'n' = 01101110
// Kombinert: 010011010110000101101110
// Delt i 6-bits grupper: 010011 010110 000101 101110
// Desimalverdier: 19, 22, 5, 46
// Base64-tegn: T, W, F, u
// Resultat: 'TWFu'

// VANLIGE BRUKSOMRÅDER

  • > Innbygging av bilder i HTML/CSS (data URI-er)
  • > Koding av binære data for JSON API-er
  • > E-postvedlegg (MIME-koding)
  • > Lagring av binære data i databaser
  • > Autentiseringstokens og API-nøkler
  • > URL-sikker dataoverføring

// JAVASCRIPT IMPLEMENTERING

Moderne nettlesere tilbyr innebygde funksjoner for Base64-koding og -dekoding:

For å kode tekst til Base64, bruk btoa() (binary to ASCII). For å dekode Base64 til tekst, bruk atob() (ASCII to binary).

// Koding av tekst til Base64
const text = 'Hello, World!';
const encoded = btoa(text);
console.log(encoded); // SGVsbG8sIFdvcmxkIQ==

// Dekoding av Base64 til tekst
const decoded = atob(encoded);
console.log(decoded); // Hello, World!

// For Unicode-strenger, bruk TextEncoder/TextDecoder
const encoder = new TextEncoder();
const decoder = new TextDecoder();

const unicodeText = 'Hello, 世界!';
const bytes = encoder.encode(unicodeText);
const base64 = btoa(String.fromCharCode(...bytes));
console.log(base64);

// SIKKERHETSHENSYN

Base64 er IKKE kryptering eller sikkerhet. Det er bare koding for datarepresentasjon. Viktige sikkerhetsmerknader:

Bruk aldri Base64 alene for beskyttelse av sensitive data. Valider alltid Base64-input for å forhindre injeksjonsangrep. Vær klar over at Base64 øker datastørrelsen med ~33%.

  • > Base64 er lett å reversere - det gir ingen sikkerhet
  • > Valider og rens alltid Base64-input
  • > Bruk riktig kryptering for sensitive data
  • > Vurder URL-sikre Base64-varianter for webapplikasjoner
  • > Vær oppmerksom på padding oracle-angrep i noen sammenhenger

// BESTE PRAKSIS

  • > Bruk URL-sikker Base64 for webapplikasjoner (erstatt + med -, / med _)
  • > Håndter alltid utfylling korrekt
  • > Valider inputlengde og tegn
  • > Vurder komprimering før koding for store data
  • > Bruk streaming for meget store datasett
  • > Implementer riktig feilhåndtering for ugyldig input