Gå til indholdet
MaxyTools

Base64 og URL-kodning: forstå og afkode

Opdateret den · 3 min. læsetid

· Opdateret den

Et billede, der er indlejret i en side som en lang række bogstaver, en adresse, hvor mellemrum bliver til %20, en loginnøgle opbygget af tre blokke adskilt af punktummer: Base64 og URL-kodning krydser hinanden hver dag i webudvikling. De ligner hinanden, forveksles let, og ingen af dem er kryptering. Her er, hvad de reelt gør, og hvordan du afkoder dem sikkert.

Base64: gør bytes udskrivelige

Base64 fremstiller binære data (et billede, en PDF) med kun 64 sikre tegn: A-Z, a-z, 0-9, + og /. Det bruges overalt, hvor en kanal kun accepterer tekst: vedhæftede filer i e-mails, billeder indlejret i CSS eller HTML (præfikset data:), nøgler, nogle konfigurationsfiler.

Princippet: 3 bytes (24 bits) deles i 4 grupper på 6 bits, som hver fremstilles af et tegn. For eksempel bliver “Man” til “TWFu”, og “Hello” bliver til “SGVsbG8=” (tegnet = fuldender den sidste ufuldstændige blok). Den talmæssige konsekvens: Base64 gør altid 3 bytes til 4 tegn, altså +33 % i omfang. Et billede på 1 MB indlejret som data: vejer omkring 1,33 MB.

Lad os gentage det: Base64 er ikke kryptering. Alle afkoder det på et øjeblik. Brug det aldrig til at “skjule” en adgangskode.

Kod og afkod med Base64 kodning og afkodning

  1. Vælg Kod eller Afkod, og indsæt derefter tekst, eller slip en fil (højst 24 MB: Base64 lægger en tredjedel til, og ud over det ville fanen blive langsom).
  2. Teksten omdannes til UTF-8, før den kodes: accenter, æ, ø, å, arabisk og emoji overlever rundturen uden skader, i modsætning til en almindelig btoa i JavaScript.
  3. Ved afkodning accepteres begge alfabeter (standard og “URL-sikker” med - og _ i stedet for + og /), tilstedeværelse eller fravær af =, linjeskift og et data:…-præfiks automatisk.
  4. Hvis de afkodede bytes ikke er tekst, registrerer værktøjet typen (PNG, JPEG, PDF, ZIP…), viser en forhåndsvisning af billeder og tilbyder filen til download.
  5. Valg for outputtet: URL-sikker variant, uden udfyldning (=), MIME-linjeskift, data:-præfiks.

URL-kodning (procentkodning)

En webadresse kan kun indeholde bestemte tegn. De andre erstattes af et “%” efterfulgt af to hexadecimale cifre, der fremstiller UTF-8-bytes. Bogstavet “é” bliver til %C3%A9, “å” bliver til %C3%A5, det arabiske bogstav “م” bliver til %D9%85, og emojien “😀” bliver til %F0%9F%98%80 (fire bytes). Et mellemrum bliver til %20, eller + i en klassisk HTML-formular.

De typer kodning, du møder
TypeKoderBruges til
KomponentAlt undtagen sikre tegnVærdien af en parameter (?navn=værdi).
Hel URLBevarer / ? # & =En komplet, allerede struktureret adresse.
FormularMellemrum som +Indholdet af en HTML-formular.

Ved afkodning af noget som “100%” eller “%ZZ” er det en fejl, fordi tegnet % skal efterfølges af to hexadecimale cifre. Hvis resultatet stadig indeholder %XX-sekvenser, er der tale om dobbeltkodning, og du skal afkode igen.

Almindelige fejl

  • At tage Base64 for kryptering og “skjule” en adgangskode i det.
  • At kode en værdi to gange og få %2520 i stedet for %20.
  • At bruge kodning af hel URL på værdien af en parameter, som derefter beholder et ukodet & eller = og ødelægger forespørgslen.
  • At stole på indholdet af en nøgle (token) uden at kontrollere dens signatur.
  • At miste accenter og danske bogstaver ved at kode med en funktion, der ikke går via UTF-8.

Ærlige begrænsninger

  • Visningen af et meget langt resultat er afkortet, men kopiering og download er fuldstændige.
  • Intet af de to systemer beskytter følsomme data: dertil kræves rigtig kryptering.
  • Filer på over 24 MB afvises for at holde fanen flydende.

Ofte stillede spørgsmål

Hvorfor gør Base64 data større?

Fordi det fremstiller 3 bytes med 4 tegn: omfanget vokser med en tredjedel (33 %), plus en eventuel afsluttende udfyldning.

Er Base64 sikkert til at skjule oplysninger?

Nej. Det har ingen nøgle og afkodes øjeblikkeligt. Det er ikke kryptering.

Sendes det, jeg koder, til en server?

Nej. Kodning og afkodning sker i din browser; teksten og filerne forlader aldrig din enhed.

Hvad betyder %20 i en adresse?

Det er et kodet mellemrum: tegnet med koden 0x20 skrives med et % efterfulgt af sin hexadecimale værdi.

Hvordan afkoder jeg et Base64-billede?

Indsæt strengen (med eller uden præfikset data:) i værktøjet: det registrerer filtypen, viser forhåndsvisningen og tilbyder download.

Værktøjer nævnt i denne guide

Flere guider

Disse guider er skrevet af MaxyTools-teamet ud fra, hvordan vores værktøjer faktisk virker. Tallene er beregninger, du selv kan gentage, eller størrelsesordener, der er angivet som sådan. Har du fundet en fejl? Skriv til os via siden Kontakt.