Et bilde lagt inn på en side som en lang rekke bokstaver, en adresse der mellomrom blir til %20, en innloggingstoken satt sammen av tre blokker adskilt av punktum: Base64, URL-koding og JWT-er dukker opp hver dag i webutvikling. De ligner på hverandre, forveksles lett, og ingen av dem er kryptering. Her er hva de faktisk gjør, og hvordan du dekoder dem trygt.
Base64: å gjøre bytes utskrivbare
Base64 representerer binære data (et bilde, en PDF) med bare 64 trygge tegn: A-Z, a-z, 0-9, + og /. Det brukes overalt der en kanal bare godtar tekst: vedlegg i e-post, bilder lagt inn i CSS eller HTML (prefikset data:), tokens og noen konfigurasjonsfiler.
Prinsippet: 3 byte (24 biter) deles i 4 grupper på 6 biter, og hver gruppe representeres av ett tegn. For eksempel blir «Man» til «TWFu» og «Hello» til «SGVsbG8=» (tegnet = fyller ut den siste ufullstendige blokken). Den tallmessige konsekvensen: Base64 gjør alltid 3 byte om til 4 tegn, altså +33 % i volum. Et bilde på 1 MB lagt inn som data: veier omtrent 1,33 MB.
La oss gjenta det: Base64 er ikke kryptering. Hvem som helst dekoder det på et øyeblikk. Bruk det aldri for å «skjule» et passord.
Koding og dekoding med Base64-koding og -dekoding
- Velg Kod eller Dekod, og lim deretter inn tekst eller slipp en fil (24 MB maksimalt: Base64 legger til en tredjedel, og over det ville fanen blitt treg).
- Tekst gjøres om til UTF-8 før kodingen: æ, ø, å, aksenter, arabisk og emoji overlever fram og tilbake uten skade, i motsetning til en rå btoa i JavaScript.
- Ved dekoding godtas begge alfabetene (standard og «URL-sikkert» med - og _ i stedet for + og /), med eller uten =, linjeskift og et data:…-prefiks, automatisk.
- Hvis de dekodede bytene ikke er tekst, gjenkjenner verktøyet typen (PNG, JPEG, PDF, ZIP …), viser en forhåndsvisning av bilder og tilbyr filen for nedlasting.
- Valg for utdata: URL-sikker variant, uten utfylling (=), MIME-linjeskift, data:-prefiks.
URL-koding (prosentkoding)
En nettadresse kan bare inneholde visse tegn. De andre erstattes av et «%» etterfulgt av to heksadesimale sifre som representerer UTF-8-bytene. Bokstaven «é» blir %C3%A9, bokstaven «å» blir %C3%A5, den arabiske bokstaven «م» blir %D9%85, og emojien «😀» blir %F0%9F%98%80 (fire byte). Et mellomrom blir %20, eller + i et klassisk HTML-skjema.
| Type | Koder | Bruk den til |
|---|---|---|
| Komponent | Alt unntatt trygge tegn | Verdien til en parameter (?navn=verdi). |
| Hel URL | Beholder / ? # & = | En fullstendig adresse som allerede er strukturert. |
| Skjema | Mellomrom som + | Innholdet i et HTML-skjema. |
Ved dekoding blir en feil («100%» eller «%ZZ») lokalisert og forklart; den tolerante modusen dekoder det som er gyldig og lar resten stå. Hvis resultatet fortsatt inneholder %XX-sekvenser, markerer verktøyet dobbel koding og tilbyr å dekode på nytt. Kortet «Analyser en URL» deler en adresse opp i skjema, brukernavn, vert, sti og parametere.
Vanlige feil
- Å ta Base64 for kryptering og «skjule» et passord i det.
- Å kode en verdi to ganger og få %2520 i stedet for %20.
- Å bruke koding av hel URL på verdien til en parameter, som da beholder en ukodet & eller = og ødelegger forespørselen.
- Å stole på innholdet i en JWT uten å verifisere signaturen.
- Å miste æ, ø og å ved å kode med en funksjon som ikke går via UTF-8.
Ærlige begrensninger
- Visningen av et svært langt resultat er forkortet, men kopiering og nedlasting er fullstendige.
- For å verifisere en JWT trenger du nøkkelen: uten den er det bare mulig å lese den.
- Ingen av disse tre mekanismene beskytter sensitive data: til det trenger du ekte kryptering.
Vanlige spørsmål
Hvorfor gjør Base64 data større?
Fordi det representerer 3 byte med 4 tegn: volumet øker med en tredjedel (33 %), pluss eventuell utfylling på slutten.
Er Base64 trygt for å skjule informasjon?
Nei. Det har ingen nøkkel og dekodes umiddelbart. Det er ikke kryptering.
Sendes JWT-en min til en server?
Nei. Tokenet, hemmeligheten og nøkkelen blir i nettleseren din.
Hva betyr %20 i en adresse?
Det er et kodet mellomrom: tegnet med kode 0x20 skrives med et % etterfulgt av den heksadesimale verdien.
Hvordan dekoder jeg et Base64-bilde?
Lim inn strengen (med eller uten data:-prefiks) i verktøyet: det gjenkjenner filtypen, viser forhåndsvisningen og tilbyr nedlasting.