Base64-koding av tekst og filer

Gjør om tekst, rå byte eller en hvilken som helst fil til Base64. Velg tegnsettet mottakeren forventer, behold eller fjern =-utfyllingen, og bryt linjene ved 76 eller 64 tegn for MIME og PEM.

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Skriv eller lim inn teksten som skal kodes, bytt inndata til Hex for å kode rå byte, eller klikk på Åpne fil for å kode en fil.
  2. La Tegnkoding stå på UTF-8 med mindre mottakersystemet forventer et annet tegnsett.
  3. Angi valgene: behold varianten Standard i de fleste tilfeller, slå av utfylling hvis mottakeren ikke vil ha den, og bryt linjene ved 76 (MIME) eller 64 (PEM) tegn ved behov.
  4. Kopier Base64-utdataene eller last dem ned som en fil.

Slik fungerer Base64-koding

Koderen leser inndataene tre byte om gangen. Disse 24 bitene deles i fire grupper på 6 bit, og hver 6-biters verdi (0 til 63) velger ett tegn: A-Z for 0 til 25, a-z for 26 til 51, 0-9 for 52 til 61, og deretter + og /. Tre byte inn og fire tegn ut, og det er derfor Base64 er omtrent 33 % større enn de opprinnelige dataene.

Text     M        a        n
Bytes    77       97       110
Bits     01001101 01100001 01101110
6-bit    010011 010110 000101 101110
Index    19     22     5      46
Base64   T      W      F      u

Utfylling og lengde på utdata

Når lengden på inndataene ikke er et multiplum av tre, blir den siste gruppen ufullstendig. Én byte til overs blir to tegn etterfulgt av ==, og to byte til overs blir tre tegn og ett =. Utdata med utfylling er derfor alltid 4 × ceil(n / 3) tegn lange for n byte med inndata.

Utfyllingen inneholder ingen data. JSON Web Tokens, URL-parametere og mange API-er utelater den, så slå av utfylling når mottakersiden forventer utdata uten utfylling. For lenker og filnavn velger du den URL-sikre varianten eller bruker siden Base64URL. Begge erstatter + og / med - og _.

Linjebryting for MIME og PEM

Som standard er utdataene én lang linje, og det er nettopp det JSON, data URI-er og HTTP-headere trenger. To formater forventer linjeskift:

  • MIME, 76 tegn. E-postvedlegg som sendes med Content-Transfer-Encoding: base64, må ikke ha linjer som er lengre enn 76 tegn (RFC 2045). Dette valget avslutter linjene med CRLF, slik MIME krever.
  • PEM, 64 tegn. Sertifikater og nøkler mellom linjene -----BEGIN og -----END bruker linjer på 64 tegn (RFC 7468). Dette valget bruker LF som linjeskift.

Tegnsett og filer

Base64 koder byte, ikke bokstaver, så tekst blir først konvertert til byte ved hjelp av et tegnsett. Bokstaven ø er to byte i UTF-8, men bare én byte i ISO-8859-1 eller Windows-1252, så den samme teksten gir forskjellig Base64. UTF-8 er riktig for nettet, JSON og nesten alle moderne API-er. Velg GBK, Shift_JIS, Windows-1251 eller et annet tegnsett bare når du må tilpasse deg et eldre system.

Filer kodes nøyaktig slik de er lagret, uten konvertering av tegnsett. For bilder med ferdige HTML- og CSS-kodesnutter, se Bilde til Base64. For en data URI med gjenkjent MIME-type bruker du Fil til Base64.

Spesifikasjon

AlfabetA-Z a-z 0-9 + /
Utdatastørrelse4 tegn per 3 byte (omtrent 133 %)
UtfyllingMed = til et multiplum av 4 tegn
StandardRFC 4648, avsnitt 4
Skiller store og små bokstaverJa

Eksempler

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

Ofte stilte spørsmål

Hvorfor er Base64-utdataene mine annerledes enn fra en annen koder?
Nesten alltid fordi inndatabytene er forskjellige. Typiske årsaker er et linjeskift på slutten (skallkommandoen echo legger til et, så bruk printf '%s' eller echo -n), et annet tegnsett, Windows-linjeskift i teksten eller ulike innstillinger for utfylling, alfabet eller linjebryting. De samme bytene med de samme innstillingene gir alltid de samme utdataene.
Hvordan koder jeg Unicode-tekst til Base64 i JavaScript?
btoa() godtar bare tegn opptil U+00FF og gir en feil for alt annet. Konverter strengen til UTF-8-byte først, for eksempel med btoa(String.fromCharCode(...new TextEncoder().encode(str))). I Node.js bruker du Buffer.from(str, 'utf8').toString('base64').
Hvordan koder jeg til Base64 på kommandolinjen?
Kjør printf '%s' 'your text' | base64 på Linux eller macOS. GNU base64 bryter utdataene ved 76 tegn som standard (legg til -w 0 for å få én linje), og openssl base64 bryter ved 64 tegn (legg til -A).
Er Base64-koding en form for kryptering?
Nei. Base64 har ingen nøkkel, og hvem som helst kan reversere det med en Base64-dekoder. Kodingen finnes for å flytte binærdata gjennom kanaler som bare godtar tekst, ikke for å skjule informasjon.
Hvor mye større blir dataene mine med Base64?

Hver gruppe på 3 byte blir til 4 tegn, rundet opp til en hel gruppe, så utdataene blir omtrent 33 % større. MIME-linjebryting legger til ytterligere to byte (CRLF) per 76 tegn.