Base64 selitettynä: miksi se kasvattaa dataa ja miten sen puretaan
Base64 kirjoittaa binaaridatan tavallisena tekstinä 64 merkillä: A–Z, a–z, 0–9 sekä + ja /. Jokaiset kolme tavua muuttuvat neljäksi merkiksi, joten teksti on noin kolmanneksen pidempi kuin data, jonka se sisältää. Sitä käytetään, kun muoto hyväksyy vain tekstiä, esimerkiksi verkkosivun data-URL-osoitteessa, JSON-kentässä tai sähköpostin liitteessä.
Miksi tekstimuodot tarvitsevat sitä
Monet muodot on tehty vain tekstiä varten. Sähköpostin runko, JSON-tiedosto ja CSS-tiedosto voivat sisältää kirjaimia ja symboleita turvallisesti, mutta raaka kuva tai zip-tiedosto sisältää tavuarvoja, joita jotkin järjestelmät voisivat muuttaa, katkaista tai tulkita ohjausmerkeiksi. Base64 käyttää vain merkkejä, jotka jokainen tekstijärjestelmä välittää muuttumattomina, joten data pysyy ehjänä. Se on määritelty dokumentissa RFC 4648.
Base64 on koodaus, ei salaisuus. Kuka tahansa voi purkaa sen ilman avainta, joten sitä ei saa koskaan käyttää salasanan tai henkilötietojen piilottamiseen.
Kuinka kolme tavua muuttuu neljäksi merkiksi
Ota sana Man, joka on kolme tavua: desimaalilukuina 77, 97 ja 110. Yhdessä kolme tavua muodostavat 24 bittiä. Kun 24 bittiä jaetaan neljään kuuden bitin ryhmään, jokainen ryhmä on luku väliltä 0–63, ja se osoittaa yhden merkin aakkostosta. Man muuttuu muotoon TWFu.
Kuusi bittiä voi nimetä vain 64 arvoa, joten neljä merkkiä kantaa kolme tavua. Tulos on siksi noin kolmanneksen suurempi kuin syöte, ennen kuin rivinvaihtoja lisätään.
Kun data ei jakaudu kolmen tavun ryhmiin, koodari täyttää lopun =-merkeillä. Ma, joka on kaksi tavua, muuttuu muotoon TWE=, ja M, joka on yksi tavu, muotoon TQ==. Täyte kertoo purkajalle, kuinka monta tavua viimeinen ryhmä sisältää.
Teksti on ensin koodattava UTF-8:aan
Base64 toimii tavuilla, ja teksti koostuu merkeistä. Merkki kuten é tai ✓ tallennetaan UTF-8-koodauksessa useampaan tavuun. UTF-8 on koodaus, jota verkossa käytetään laajasti. Selaimen funktio btoa() ottaa merkkijonon ja käsittelee jokaisen merkin yhtenä tavuna, joten se epäonnistuu peruslatinalaisen merkistön yläpuolella olevilla merkeillä. Sen kutsuminen rastimerkillä heittää virheen InvalidCharacterError.
Ratkaisu on muuttaa teksti ensin UTF-8-tavuiksi ja koodata sitten nämä tavut. Lause héllo ✓ on 10 tavua UTF-8:ssa, ja sen Base64 on aMOpbGxvIOKckw==. Base64-työkalu tekee tämän vaiheen puolestasi. Purkaessaan se lukee tavut takaisin UTF-8-tekstiksi. Jos tavut eivät ole kelvollista UTF-8-tekstiä, työkalu käsittelee ne tiedostona ja tarjoaa tiedoston lataamisen.
URL-turvallinen Base64
Vakioaakkostossa on + ja /. URL-osoitteessa + voi tarkoittaa välilyöntiä ja / erottaa polun osia, joten Base64-merkkijono voi rikkoa linkin. URL-turvallinen muoto (RFC 4648, kohta 5) käyttää sen sijaan - ja _ -merkkejä ja yleensä jättää =-täytteen pois. Käytä sitä, kun merkkijono menee URL-osoitteeseen, tiedostonimeen tai tunnisteeseen. Dekooderi hyväksyy molemmat muodot, täytteellä tai ilman.
Jos Base64 on peräisin linkistä, pura URL-osoite ensin. Linkissä prosenttikoodattu arvo täytyy purkaa ennen kuin sen Base64 voidaan lukea. Prosenttikoodauksen opas selittää linkkien säännöt.
Yleisin tapaus on kirjautumistunnus. JSON Web Token koostuu kolmesta Base64url-osasta, jotka on yhdistetty pisteillä: otsikko, data ja allekirjoitus. JWT-dekooderi erottelee osat ja näyttää otsikon ja datan luettavana JSON-muotoisena.
Data-URL-osoitteet ja kuvat
Data-URL-osoite sisällyttää tiedoston itse linkkiin. Sen muoto on data:, sitten mediatyyppi, sitten ;base64, sitten pilkku ja data. Pieni kuva on muotoa data:image/png;base64, jota seuraavat koodatut tavut. Verkkosivut ja tyylitiedostot hyväksyvät tämän muodon, mikä säästää pyynnön pienelle kuvakkeelle.
Hinta on koko. Data on noin kolmanneksen suurempi, ja se kulkee sivun tai tyylitiedoston sisällä sen sijaan, että se olisi erillinen tiedosto, jonka selain voi välimuistittaa. Käytä data-URL-osoitteita pieniin kuviin, ei suuriin valokuviin. Pakkaa valokuva ennen koodaamista, jos se on iso.
Kun purat Base64:n työkalussa, se tarkastelee datan ensimmäisiä tavuja. PNG-, JPEG-, GIF- ja WebP-tiedostot alkavat jokainen tunnetulla tunnisteella, joten työkalu näyttää esikatselun ja tarjoaa latauksen. Kuvatyyppinen data-URL-osoite näytetään myös kuvana.
Näin teet sen fixmintillä
- Valitse ylhäältä Teksti tai Base64 -kohdasta Koodaa tai Pura ja liitä sitten tekstisi tai Base64.
- Valitse URL-turvallinen aakkosto, ei =-täytemerkkejä tunnisteille, tiedostonimille ja linkeille. Dekooderi hyväksyy kummankin muodon joka tapauksessa.
- Tehdäksesi data-URL-osoitteen tiedostosta, pudota tiedosto pudotusalueelle ja valitse Tiedostoille: tuota data:-URL-osoite.
- Kopioi tulos. Jos puretut tavut ovat tiedosto eikä teksti, käytä työkalun tarjoamaa latausta.
Yleisimmät purkuvirheet
- Merkki ei ole sallittu. Syötteessä on merkki, joka ei kuulu 64 merkin joukkoon, kuten kopioidusta lauseesta peräisin oleva lainausmerkki. Tarkista, mistä teksti on peräisin. Nollaleveyden välilyönti kopioidussa tekstissä aiheuttaa saman virheen, joten poista näkymättömät merkit ja yritä uudelleen. Näkymättömien merkkien opas kertoo, mistä ne tulevat.
- Pituus on väärä. Merkki puuttuu tai on ylimääräinen, mikä tarkoittaa yleensä, että kopiointi katkesi.
- Rivinvaihdot ja välilyönnit. Sähköposti (MIME) rivittää Base64:n 76 merkin välein. Dekooderi poistaa välilyönnit ja rivinvaihdot, joten rivitetyn tekstin voi liittää sellaisenaan.
- Puuttuva täyte. Jotkin järjestelmät jättävät =-merkit pois. Dekooderi lisää ne takaisin.
Erikoistapaukset
- Purettu tulos näyttää roskalta. Kyseessä voi olla tiedosto eikä teksti. Zip-tiedosto, PDF tai ohjelma purkautuu tavuiksi, jotka eivät näy tekstinä. Työkalu tarjoaa ne latauksena.
- Erittäin suuret syötteet. Koko tiedosto pidetään selaimessa koodauksen tai purkamisen ajan, joten erittäin suuri tiedosto voi olla hidas, ja puhelimella se voi epäonnistua.
Pikavastaukset
Onko Base64 sama asia kuin salaus?
Ei. Se on käännettävä koodaus ilman avainta, joten kuka tahansa voi purkaa sen.
Miksi Base64-tekstini on pidempi kuin tiedosto?
Jokainen kolmen tavun ryhmä muuttuu neljäksi merkiksi, joten teksti on noin kolmanneksen suurempi.
Miksi kopioitu Base64-merkkijono ei pura?
Yleensä kopioinnin aikana katosi tai lisääntyi merkki, esimerkiksi rivinvaihto väärässä kohdassa tai puuttuva viimeinen merkki. Kopioi se uudelleen lähteestä.
Käännetty tekoälyn avulla: Englanninkielinen alkuperäisteos.
Kommentit
Ei vielä kommentteja. Ole ensimmäinen.


