Slik bruker du verktøyet
- 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.
- La Tegnkoding stå på UTF-8 med mindre mottakersystemet forventer et annet tegnsett.
- 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.
- 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
-----BEGINog-----ENDbruker 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
| Alfabet | A-Z a-z 0-9 + / |
|---|---|
| Utdatastørrelse | 4 tegn per 3 byte (omtrent 133 %) |
| Utfylling | Med = til et multiplum av 4 tegn |
| Standard | RFC 4648, avsnitt 4 |
| Skiller store og små bokstaver | Ja |
Eksempler
| Inndata (UTF-8) | Utdata |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ== |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Ofte stilte spørsmål
Hvorfor er Base64-utdataene mine annerledes enn fra en annen koder?
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?
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?
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.