Dina data är 100 % privata -- Base64 kodas och avkodas helt och hållet på din enhet.
Base64 är ett sätt att representera binär data som vanlig text med hjälp av 64 ASCII-tecken: A–Z, a–z, 0–9, plus + och /. Det gör att binärdata som bilder, nycklar och e-postbilagor kan färdas säkert genom system som är byggda för text. Det är kodning, inte kryptering.
Base64 använder ett fast alfabet med 64 tecken. Varje värde från 0 till 63 mappas till exakt ett av dem, och det är så 3 byte binärdata blir 4 läsbara tecken:
| Värden | Tecken | |
|---|---|---|
| 0–25 | A–Z | 26 versaler |
| 26–51 | a–z | 26 gemener |
| 52–61 | 0–9 | 10 siffror |
| 62–63 | + / | 2 symboler |
Tecknet "=" är det enda undantaget. Det är utfyllnad, inte ett av de 64 värdena, och används bara för att fylla ut det sista blocket.
Du har nästan säkert sett det redan. Base64 dyker upp överallt där binärdata behöver transporteras inuti text:
Det där data-URI-tricket ser ut så här. Den långa strängen är hela bilden:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />Tidiga nätverksprotokoll var byggda för text, inte råbyte. ASCII använde 7 bitar och 128 tecken, vilket fungerade för engelska men inte för binärdata. Vissa system skadade kontrolltecken eller skrev om radslut (LF till CR + LF), vilket i tysthet korrupterade bilder och ljud under överföring.
Base64 kringgår allt det här genom att bara använda tecken som alla system redan är överens om. Base16 och Base32 gör samma jobb med mindre alfabet, men Base64 packar mer data per tecken och håller sig ändå säker. Det är därför det vann.
Hela upplägget är en idé på upprepning: ta 3 byte (24 bitar), dela om dem i fyra 6-bitarsgrupper och slå upp varje grupp i alfabetet. Här är ordet "Logto", kodat för hand.
Steg 1. Omvandla varje tecken till dess 8-bitars binär:
| Tecken | ASCII-kod | Binär |
|---|---|---|
| L | 76 | 01001100 |
| o | 111 | 01101111 |
| g | 103 | 01100111 |
| t | 116 | 01110100 |
| o | 111 | 01101111 |
Steg 2. Ta de första tre byten, "Log", och dela om samma 24 bitar i fyra 6-bitarsgrupper:
Steg 3. Läs varje 6-bitarsgrupp som ett tal och slå upp talet i alfabetet:
| 6-bitarsgrupp | Värde | Base64-tecken |
|---|---|---|
| 010011 | 19 | T |
| 000110 | 6 | G |
| 111101 | 61 | 9 |
| 100111 | 39 | n |
"Logto" är 5 byte, inte en multipel av 3. De sista två byten, "to", ger en 6 + 6 + 4-delning. Fyll ut de sista 4 bitarna med nollor för att bilda en 6-bitarsgrupp, lägg sedan till ett "=" för att slutföra 4-teckensblocket:
Sätt ihop blocken:
"Logto" → TG9ndG8=Varje språk levereras med detta inbyggt. I Node.js:
const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=Tre regler följer av det här processen, värda att ha i åtanke:
Använd Base64 när binärdata måste passera genom en kanal som bara hanterar text:
Vad du får i gengäld:
Standard Base64 förlitar sig på tre tecken som krockar med hur URL:er, frågesträngar och filnamn fungerar: +, / och =-utfyllnaden. Stoppa in en vanlig Base64-sträng i en länk och det kan gå sönder på tysta sätt:
Du kan procentkoda dem (+ blir %2B, / blir %2F, = blir %3D), men det gör strängen längre och är lätt att dubbelkoda av misstag.
Base64URL (RFC 4648 §5) löser detta vid källan: byt + mot -, byt / mot _, och utelämna =-utfyllnaden. Resultatet passar direkt in i en URL, frågeparameter eller filnamn utan något som behöver escapes. Du ser det i URL:er, filnamn och många webb-API:er.
const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8Base64 är en representation, inte en gratis lunch. Håll tre saker i åtanke:
Nej. Det är reversibel kodning med ett offentligt alfabet, så vem som helst kan avkoda det direkt och det ger noll konfidentialitet. Kryptera känslig data istället.
Base64 omvandlar varje 3 byte till 4 tecken, så den kodade formen är alltid ungefär en tredjedel större än de ursprungliga byten.
De är utfyllnad som håller utdata till en multipel av 4 tecken. Ett "=" betyder att indata hade 2 överblivna byte; två "=" betyder 1; inget "=" betyder att längden redan var en multipel av 3 byte.
Base64URL är samma kodning med ett URL- och filnamns-säkert alfabet: - och _ ersätter + och /, och =-utfyllnaden utelämnas vanligtvis. Det är vanligt i URL:er, filnamn och många webb-API:er.
Vilken binärdata som helst: bilder, PDF:er, nycklar, körbara filer. Base64 arbetar på råbyte, så den ursprungliga innehållstypen spelar ingen roll.
Nej. Kodning och avkodning körs helt i din webbläsare. Ingenting du klistrar in laddas upp eller loggas.