🛠️

Whiz Tools

Build • Create • Innovate

Base64-kooderi ja -purkaja: Muunna teksti Base64:ksi/ Base64:stä

Ilmainen online-työkalu tekstin koodamiseen Base64:ksi tai Base64-merkkijonojen purkamiseen takaisin tekstiksi. Tukee normaalia ja URL-turvallista Base64-koodausta välittömällä muunnoksella.

Base64-kooderi/Purku

Muuta teksti Base64-koodaukseen ja takaisin

Kopioi
📚

Dokumentaatio

Base64-kooderi ja -dekooderi

Johdanto

Base64 on binaarista tekstiin koodausjärjestelmä, joka esittää binaaridataa ASCII-merkkijonomuodossa. Se on suunniteltu kuljettamaan binaarimuodossa tallennettua dataa kanavilla, jotka tukevat luotettavasti vain tekstisisältöä. Base64-koodaus muuntaa binaaridatan 64 merkin joukkoon (siksi nimi), jota voidaan turvallisesti siirtää tekstipohjaisilla protokollilla ilman datan korruptiota.

Base64-merkkijoukko koostuu:

  • Suurista kirjaimista A-Z (26 merkkiä)
  • Pienistä kirjaimista a-z (26 merkkiä)
  • Numeroista 0-9 (10 merkkiä)
  • Kahdesta lisämerkistä, tyypillisesti "+" ja "/" (2 merkkiä)

Tämä työkalu mahdollistaa tekstin helpon koodauksen Base64-muotoon tai Base64-merkkijonojen dekoodauksen takaisin alkuperäiseen tekstiinsä. Se on erityisen hyödyllinen kehittäjille, IT-ammattilaisille ja kaikille, jotka työskentelevät datan kanssa, joka on lähetettävä turvallisesti tekstipohjaisilla kanavilla.

Kuinka Base64-koodaus toimii

Koodausprosessi

Base64-koodaus toimii muuntamalla jokaisen kolmen tavun (24 bittiä) binaaridatan neljäksi Base64-merkkijonoksi. Prosessi etenee seuraavasti:

  1. Muunna syöte teksti sen binaariedustukseen (käyttäen ASCII- tai UTF-8-koodausta)
  2. Ryhmittele binaaridata 24 bittiä (3 tavua) sisältäviksi lohkoiksi
  3. Jaa jokainen 24-bittinen lohko neljään 6-bittiseen ryhmään
  4. Muunna jokainen 6-bittinen ryhmä vastaavaksi Base64-merkkijonoksi

Kun syötteen pituus ei ole jaollinen kolmella, täyte "=" -merkkejä lisätään 4:3-suhteen ylläpitämiseksi tulosten ja syötteen pituuksien välillä.

Matemaattinen esitys

Tavujonolle b1,b2,b3b_1, b_2, b_3 vastaavat Base64-merkit c1,c2,c3,c4c_1, c_2, c_3, c_4 lasketaan seuraavasti:

c1=Base64[(b1>>2)]c_1 = \text{Base64}[(b_1 >> 2)]
c2=Base64[((b1&3)<<4)(b2>>4)]c_2 = \text{Base64}[((b_1 \& 3) << 4) | (b_2 >> 4)]
c3=Base64[((b2&15)<<2)(b3>>6)]c_3 = \text{Base64}[((b_2 \& 15) << 2) | (b_3 >> 6)]
c4=Base64[(b3&63)]c_4 = \text{Base64}[(b_3 \& 63)]

Missä Base64[i]\text{Base64}[i] edustaa ii:ttä merkkiä Base64-aakkostossa.

Dekoodausprosessi

Base64-dekoodaus kääntää koodausprosessin:

  1. Muunna jokainen Base64-merkki sen 6-bittiseksi arvoksi
  2. Yhdistä nämä 6-bittiset arvot
  3. Ryhmittele bitit 8-bittisiksi lohkoiksi (tavuiksi)
  4. Muunna jokainen tavu vastaavaksi merkiksi

Täyte

Kun koodattavien tavujen määrä ei ole jaollinen kolmella, täytettä käytetään:

  • Jos jäljellä on yksi tavu, se muunnetaan kahdeksi Base64-merkkijonoksi, joiden jälkeen tulee "=="
  • Jos jäljellä on kaksi tavua, ne muunnetaan kolmeksi Base64-merkkijonoksi, joiden jälkeen tulee "="

Esimerkki

Koodataan teksti "Hello" Base64:een:

  1. "Hello":n ASCII-edustus: 72 101 108 108 111
  2. Binaariedustus: 01001000 01100101 01101100 01101100 01101111
  3. Ryhmittely 6-bittisiin lohkoihin: 010010 000110 010101 101100 011011 000110 1111
  4. Viimeinen lohko sisältää vain 4 bittiä, joten täytämme nollilla: 010010 000110 010101 101100 011011 000110 111100
  5. Muuntaminen desimaaliksi: 18, 6, 21, 44, 27, 6, 60
  6. Etsiminen Base64-aakkostosta: S, G, V, s, b, G, 8
  7. Tulos on "SGVsbG8="

Huomaa "=" -täyte lopussa, koska syötteen pituus (5 tavua) ei ole jaollinen kolmella.

Kaava

Base64-koodatun merkkijonon pituuden laskemisen yleinen kaava on:

encoded_length=4×input_length3\text{encoded\_length} = 4 \times \lceil \frac{\text{input\_length}}{3} \rceil

Missä x\lceil x \rceil edustaa kattofunktiota (pyöristämistä ylöspäin lähimpään kokonaislukuun).

Käyttötapaukset

Base64-koodaus on laajasti käytössä erilaisissa sovelluksissa:

  1. Sähköpostiliitteet: MIME (monipuolinen internet-sähköpostin laajennus) käyttää Base64:ää binaaristen liitteiden koodamiseen sähköpostissa.

  2. Data-URL:t: Pienien kuvien, fonttien tai muiden resurssien upottaminen suoraan HTML:ään, CSS:ään tai JavaScriptiin data: URL -kaavalla.

  3. API-viestintä: Binaaridatan turvallinen siirtäminen JSON-kuormissa tai muissa tekstipohjaisissa API-muodoissa.

  4. Binaaridatan tallentaminen tekstimuodoissa: Kun binaaridata on tallennettava XML:ään, JSON:iin tai muihin tekstipohjaisiin muotoihin.

  5. Todennusjärjestelmät: HTTP:n perusautentikointi käyttää Base64-koodausta (vaikka se ei ole turvallista, vain koodauksen vuoksi).

  6. Salaus: Osana erilaisia salausprotokollia ja -järjestelmiä, usein avainten tai sertifikaattien koodauksessa.

  7. Evästeiden arvot: Monimutkaisten tietorakenteiden koodaus evästeisiin tallennettavaksi.

Vaihtoehdot

Vaikka Base64 on laajalti käytössä, on olemassa vaihtoehtoja, jotka voivat olla sopivampia tietyissä tilanteissa:

  1. URL-turvallinen Base64: Muunnos, joka käyttää "-" ja "_" "+" ja "/" sijaan, jotta vältetään URL-koodausongelmat. Hyödyllinen datalle, joka sisällytetään URL-osoitteisiin.

  2. Base32: Käyttää 32-merkkistä joukkoa, mikä johtaa pidempään tulokseen, mutta parempaan ihmislukemiseen ja kirjainherkkyyteen.

  3. Hex-koodaus: Yksinkertainen muunnos heksadesimaaliin, joka on vähemmän tehokasta (kaksinkertaistaa koon), mutta hyvin yksinkertaista ja laajasti tuettua.

  4. Binaarisiirto: Suurille tiedostoille tai kun tehokkuus on kriittistä, suorat binaarisiirtoprotokollat, kuten HTTP, asianmukaisilla Content-Type-otsikoilla, ovat suositeltavampia.

  5. Pakkaus + Base64: Suurille tekstidatoille pakkaaminen ennen koodausta voi vähentää koon kasvua.

  6. JSON/XML-serialisointi: Rakenne-datalle alkuperäisen JSON- tai XML-serialisoinnin käyttäminen voi olla sopivampaa kuin Base64-koodaus.

Historia

Base64-koodaus juontaa juurensa varhaiseen tietojenkäsittelyyn ja telekommunikaatiojärjestelmiin, joissa binaaridataa oli lähetettävä kanavilla, jotka oli suunniteltu tekstille.

Base64:n virallinen spesifikaatio julkaistiin ensimmäisen kerran vuonna 1987 osana RFC 989, joka määritteli yksityisen parannetun postin (PEM). Tämä päivitettiin myöhemmin RFC 1421:ssä (1993) ja RFC 2045:ssä (1996, osana MIMEa).

Termi "Base64" tulee siitä, että koodaus käyttää 64 eri ASCII-merkkiä binaaridatan esittämiseen. Tämä 64 merkin valinta oli tarkoituksellista, koska 64 on kahden potenssi (2^6), mikä tekee muunnoksesta binaarista Base64:een tehokasta.

Ajan myötä useita Base64-muunnoksia on syntynyt:

  • Standardi Base64: Kuten RFC 4648 määrittelee, käyttäen A-Z, a-z, 0-9, +, / ja = täytteenä
  • URL-turvallinen Base64: Käyttää - ja _ "+" ja / sijaan, jotta vältetään URL-koodausongelmat
  • Tiedostonimi-turvallinen Base64: Samankaltainen kuin URL-turvallinen, suunniteltu käytettäväksi tiedostonimissä
  • Muokattu Base64 IMAP:lle: Käytetään IMAP-protokollassa eri erikoismerkkijoukolla

Huolimatta siitä, että se on yli kolmekymmentä vuotta vanha, Base64 pysyy perustyökaluna nykyaikaisessa tietojenkäsittelyssä, erityisesti verkkosovellusten ja API:en myötä, jotka nojaavat voimakkaasti tekstipohjaisiin tietomuotoihin, kuten JSON.

Koodiesimerkit

Tässä on esimerkkejä Base64-koodauksesta ja -dekoodauksesta eri ohjelmointikielillä:

1// JavaScript Base64-koodaus/dekoodaus
2function encodeToBase64(text) {
3  return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7  try {
8    return atob(base64String);
9  } catch (e) {
10    throw new Error("Virheellinen Base64-merkkijono");
11  }
12}
13
14// Esimerkin käyttö
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Koodattu:", encoded);  // SGVsbG8sIFdvcmxkIQ==
18
19try {
20  const decoded = decodeFromBase64(encoded);
21  console.log("Dekoodattu:", decoded);  // Hello, World!
22} catch (error) {
23  console.error(error.message);
24}
25

Rajatapaukset ja huomioitavaa

Kun työskentelet Base64-koodauksen ja dekoodauksen kanssa, ole tietoinen näistä tärkeistä seikoista:

  1. Unicode ja ei-ASCII-merkit: Kun koodaat tekstiä, jossa on ei-ASCII-merkkejä, varmista oikea merkkikoodaus (yleensä UTF-8) ennen Base64-koodausta.

  2. Täyte: Standardi Base64 käyttää täytettä "=" -merkkejä varmistaakseen, että tuloksen pituus on neljän moninkertainen. Jotkut toteutukset sallivat täytteen poistamisen, mikä voi aiheuttaa yhteensopivuusongelmia.

  3. Rivinvaihdot: Perinteiset Base64-toteutukset lisäävät rivinvaihtoja (yleensä joka 76. merkki) luettavuutta varten, mutta nykyaikaiset sovellukset ohittavat usein nämä.

  4. URL-turvallinen Base64: Standardi Base64 käyttää "+" ja "/" merkkejä, joilla on erityisiä merkityksiä URL-osoitteissa. URL-konteksteissa käytä URL-turvallista Base64:ää, joka korvasi nämä "-" ja "_".

  5. Tyhjät merkit: Dekoodauksessa jotkut toteutukset ovat armollisia ja ohittavat tyhjät merkit, kun taas toiset vaativat tarkan syötteen.

  6. Koon kasvu: Base64-koodaus lisää datan kokoa noin 33 % (4 tulosmerkkiä 3 syötemerkkiä kohti).

  7. Suorituskyky: Base64-koodaus/dekoodaus voi olla laskennallisesti intensiivistä erittäin suurille tiedoille. Harkitse virtaavia lähestymistapoja suurille tiedostoille.

Viitteet

  1. RFC 4648 - Base16, Base32 ja Base64-datakoodaukset
  2. RFC 2045 - MIME Osa Yksi: Internet-viestien runkojen formaatti
  3. MDN Web Docs: Base64-koodaus ja -dekoodaus
  4. Base64 - Wikipedia
  5. MIME - Wikipedia