Base64-kod tekst og filer

Lav tekst, rå bytes eller en hvilken som helst fil om til Base64. Vælg det tegnsæt, modtageren forventer, behold eller fjern =-udfyldningen, og ombryd linjer ved 76 eller 64 tegn til MIME og PEM.

Kører udelukkende i din browser. Intet bliver uploadet.

Sådan bruger du værktøjet

  1. Skriv eller indsæt den tekst, der skal kodes, vælg Hex under Input som for at kode rå bytes, eller klik på Åbn fil for at kode en fil.
  2. Lad Tegnkodning stå på UTF-8, medmindre det modtagende system forventer et andet tegnsæt.
  3. Vælg indstillingerne: Behold varianten Standard til de fleste formål, slå Udfyldning fra, hvis modtageren ikke ønsker den, og vælg 76 (MIME) eller 64 (PEM) tegn under Linjeombrydning efter behov.
  4. Kopiér Base64-outputtet, eller download det som en fil.

Sådan fungerer Base64-kodning

Koderen læser inputtet tre bytes ad gangen. De 24 bit deles op i fire grupper på 6 bit, og hver 6-bit-værdi (0 til 63) udpeger ét tegn: A-Z for 0 til 25, a-z for 26 til 51, 0-9 for 52 til 61 og derefter + og /. Tre bytes ind giver fire tegn ud, og derfor er Base64 ca. 33 % større end de oprindelige data.

Tekst    M        a        n
Bytes    77       97       110
Bit      01001101 01100001 01101110
6 bit    010011 010110 000101 101110
Indeks   19     22     5      46
Base64   T      W      F      u

Udfyldning og outputlængde

Når inputlængden ikke er et multiplum af tre, er den sidste gruppe ufuldstændig. Én overskydende byte bliver til to tegn efterfulgt af ==; to overskydende bytes bliver til tre tegn og ét =. Output med udfyldning er derfor altid 4 × ceil(n / 3) tegn langt for n inputbytes.

Udfyldningen indeholder ingen data. JSON Web Tokens, URL-parametre og mange API'er udelader den, så slå udfyldning fra, når modtageren forventer output uden udfyldning. Til links og filnavne skal du vælge den URL-sikre variant eller bruge siden Base64URL, som begge erstatter + og / med - og _.

Linjeombrydning til MIME og PEM

Som standard er outputtet én lang linje, og det er netop det, JSON, data URI'er og HTTP-headere kræver. To formater forventer linjeskift:

  • MIME, 76 tegn. Vedhæftede filer i e-mails, der sendes med Content-Transfer-Encoding: base64, må ikke have linjer på mere end 76 tegn (RFC 2045). Denne indstilling afslutter linjerne med CRLF, sådan som MIME kræver.
  • PEM, 64 tegn. Certifikater og nøgler mellem linjerne -----BEGIN og -----END bruger linjer på 64 tegn (RFC 7468). Denne indstilling bruger LF som linjeafslutning.

Tegnsæt og filer

Base64 koder bytes, ikke bogstaver, så tekst konverteres først til bytes med et tegnsæt. Bogstavet ø fylder to bytes i UTF-8, men kun én byte i ISO-8859-1 eller Windows-1252, så den samme tekst giver forskellig Base64. UTF-8 er det rigtige valg til nettet, JSON og næsten alle moderne API'er; vælg kun GBK, Shift_JIS, Windows-1251 eller et andet tegnsæt for at matche et ældre system.

Filer kodes præcis, som de er gemt, uden nogen konvertering af tegnsæt. Til billeder med færdige HTML- og CSS-kodestykker kan du bruge Billede til Base64; til en data URI med den genkendte MIME-type kan du bruge Fil til Base64.

Specifikation

AlfabetA-Z a-z 0-9 + /
Outputstørrelse4 tegn pr. 3 bytes (ca. 133 %)
UdfyldningUdfyldes med = til et multiplum af 4 tegn
StandardRFC 4648 afsnit 4
Skelner mellem store og små bogstaverJa

Eksempler

Input (UTF-8)Output
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

Ofte stillede spørgsmål

Hvorfor får jeg et andet Base64-output end med en anden koder?
Næsten altid fordi inputbytene er forskellige. Typiske årsager er et afsluttende linjeskift (shellkommandoen echo tilføjer et; brug printf '%s' eller echo -n), et andet tegnsæt, Windows-linjeskift i teksten eller forskellige indstillinger for udfyldning, alfabet eller linjeombrydning. De samme bytes med de samme indstillinger giver altid det samme output.
Hvordan Base64-koder jeg Unicode-tekst i JavaScript?
btoa() accepterer kun tegn op til U+00FF og kaster en fejl ved alt andet. Konvertér først strengen til UTF-8-bytes, for eksempel med btoa(String.fromCharCode(...new TextEncoder().encode(str))). I Node.js kan du bruge Buffer.from(str, 'utf8').toString('base64').
Hvordan Base64-koder jeg på kommandolinjen?
Kør printf '%s' 'your text' | base64 på Linux eller macOS. GNU base64 ombryder som standard outputtet ved 76 tegn (tilføj -w 0 for at få én linje), og openssl base64 ombryder ved 64 tegn (tilføj -A).
Er Base64-kodning en form for kryptering?
Nej. Base64 har ingen nøgle, og alle kan vende kodningen om med en Base64-dekoder. Den findes for at flytte binære data gennem kanaler, der kun accepterer tekst, ikke for at skjule oplysninger.
Hvor meget større bliver mine data med Base64?

Hver gruppe på 3 bytes bliver til 4 tegn, rundet op til en hel gruppe, så outputtet er ca. 33 % større. MIME-linjeombrydning tilføjer yderligere to bytes (CRLF) pr. 76 tegn.