[GUIDE] 8 min læsning

[GUIDE] Komplet Base64 Reference

Alt hvad du skal vide om Base64-kodning: teori, implementering og bedste praksis.

Januar 2025 | fundamentals

// HVAD ER BASE64?

Base64 er et binær-til-tekst kodningsskema, der repræsenterer binære data ved hjælp af 64 ASCII-tegn. Det er designet til at kode binære data, der skal gemmes og overføres via medier, der er designet til tekstdata.

Base64-tegnsættet inkluderer A-Z, a-z, 0-9, og to yderligere tegn (typisk + og /), plus = til polstring.

// HVORDAN BASE64 VIRKER

Base64-kodning virker ved at tage binære data og konvertere dem til en streng af ASCII-tegn. Processen indebærer:

1. Opdel input i 6-bit chunks (Base64 bruger 6 bits per tegn) 2. Map hver 6-bit værdi til et tegn i Base64-alfabetet 3. Tilføj polstring med '='-tegn hvis nødvendigt

// Eksempel: Kodning af 'Man' til Base64
// 'M' = 01001101, 'a' = 01100001, 'n' = 01101110
// Kombineret: 010011010110000101101110
// Opdelt i 6-bit grupper: 010011 010110 000101 101110
// Decimal værdier: 19, 22, 5, 46
// Base64 tegn: T, W, F, u
// Resultat: 'TWFu'

// ALMINDELIGE ANVENDELSER

  • > Indlejring af billeder i HTML/CSS (data URI'er)
  • > Kodning af binære data til JSON API'er
  • > E-mail vedhæftninger (MIME-kodning)
  • > Opbevaring af binære data i databaser
  • > Autentifikationstokens og API-nøgler
  • > URL-sikker dataoverførsel

// JAVASCRIPT IMPLEMENTERING

Moderne browsere tilbyder indbyggede funktioner til Base64-kodning og -afkodning:

Til kodning af tekst til Base64, brug btoa() (binary to ASCII). Til afkodning af Base64 til tekst, brug atob() (ASCII to binary).

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

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

// For Unicode-strenge, brug 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);

// SIKKERHEDSOVERVEJELSER

Base64 er IKKE kryptering eller sikkerhed. Det er blot kodning til datarepræsentation. Vigtige sikkerhedsnoter:

Brug aldrig Base64 alene til beskyttelse af følsomme data. Valider altid Base64-input for at forhindre injektionsangreb. Vær opmærksom på, at Base64 øger datastørrelsen med ~33%.

  • > Base64 er let at vende - det giver ingen sikkerhed
  • > Valider og rens altid Base64-input
  • > Brug ordentlig kryptering til følsomme data
  • > Overvej URL-sikre Base64-varianter til webapplikationer
  • > Vær opmærksom på padding oracle-angreb i nogle sammenhænge

// BEDSTE PRAKSIS

  • > Brug URL-sikker Base64 til webapplikationer (erstat + med -, / med _)
  • > Håndter altid polstring korrekt
  • > Valider inputlængde og tegn
  • > Overvej komprimering før kodning for store data
  • > Brug streaming til meget store datasæt
  • > Implementer ordentlig fejlhåndtering for ugyldig input