Base64-koodain / -purkaja

Koodaa tai pura Base64-merkkijonoja heti selaimessasi.

Mikä on Base64?

Base64 on koodaustapa, joka muuntaa binääridatan tekstimuotoon 64 tulostettavan ASCII-merkin avulla: isot ja pienet kirjaimet A–Z ja a–z, numerot 0–9 sekä merkit + ja /. Lisäksi käytetään täytemerkkiä =. Nimi "Base64" viittaa koodauksen 64 merkin aakkostoon.

Base64:n tarkoitus on tehdä mielivaltaisesta binääridatasta turvallista siirtää ja tallentaa ympäristöissä, jotka käsittelevät vain tekstiä. Monet protokollat ja järjestelmät on suunniteltu käsittelemään vain tulostettavaa ASCII-tekstiä: sähköposti (MIME), URL-osoitteet, HTML-määritteet, JSON-arvot ja XML. Base64 tarjoaa luotettavan tavan upottaa binääri- tai Unicode-dataa näihin ympäristöihin ilman, että se vioittuu tai tulkitaan väärin.

Miten Base64-koodaus toimii

Base64-koodaus ottaa syötteestä kolme tavua (24 bittiä) kerrallaan ja jakaa ne neljään 6 bitin ryhmään. Jokainen 6 bitin ryhmä vastaa yhtä Base64-aakkoston 64 merkistä (A = 0, B = 1, ... Z = 25, a = 26, ... z = 51, 0 = 52, ... 9 = 61, + = 62, / = 63). Jos syötteen pituus ei ole jaollinen kolmella, loppuun lisätään täytemerkkejä (=), jotta tulosteen pituus on neljällä jaollinen.

Tämä tarkoittaa, että Base64 kasvattaa datan kokoa noin 33 %: kolmesta syötetavusta tulee neljä tulostemerkkiä. Tämä on hinta siitä, että data kulkee turvallisesti pelkkää tekstiä käsittelevien kanavien läpi. Siksi Base64:ää käytetään siirtoon ja upottamiseen, ei yleiseen pakkaamiseen tai tallennukseen.

Base64:n yleiset käyttökohteet

Sähköpostin liitteet: MIME-standardi koodaa binääriset liitteet (kuvat, PDF-tiedostot, ohjelmat) Base64-tekstiksi, jotta ne voidaan välittää vain ASCII-merkkejä käsittelevien sähköpostipalvelimien kautta. Data-URL-osoitteet: kuvia ja muita tiedostoja voi upottaa suoraan HTML- tai CSS-koodiin Base64-merkkijonoina, jolloin erillisiä tiedostopyyntöjä ei tarvita; tästä on hyötyä pienissä kuvakkeissa sähköpostipohjissa tai ilman verkkoyhteyttä toimivissa sovelluksissa. Rajapintojen tunnistautuminen: HTTP:n Basic-tunnistautuminen koodaa tunnukset Base64-muotoon Authorization-otsakkeessa, mutta tämä ei ole salausta, ja sitä tulisi käyttää vain HTTPS-yhteydellä. JWT-tunnisteet: JSON Web Tokenit koodaavat otsake- ja sisältöosansa Base64Url-muodossa, URL-turvallisessa muunnelmassa, jossa + korvataan merkillä - ja / merkillä _ ja täyte jätetään pois. Salaustiedot: julkiset ja yksityiset avaimet, varmenteet ja allekirjoitukset tallennetaan ja siirretään yleensä Base64-koodattuina PEM-muodossa.

Base64 ei ole salausta

Base64 ei ole salausta. Se on palautettava koodaus: kuka tahansa voi purkaa Base64-merkkijonon ilman avainta tai salasanaa. Se ei tarjoa minkäänlaista tietoturvaa tai luottamuksellisuutta. Muunnos on deterministinen ja julkinen: sama syöte tuottaa aina saman tulosteen, ja tuloste on helppo palauttaa. Älä koskaan käytä Base64:ää arkaluonteisen tiedon "piilottamiseen"; siihen tarvitaan oikea salaus (AES, RSA tai vastaava). Base64 on olemassa vain muotojen yhteensopivuutta varten, ei tietoturvaa.

Usein kysytyt kysymykset

Miksi Base64-tuloste päättyy merkkeihin = tai ==?

Merkit = ovat täytettä. Base64 käsittelee kolmen syötetavun ryhmiä, joista tulee neljä tulostemerkkiä. Jos syötteen pituus ei ole jaollinen kolmella, tulosteeseen lisätään yksi tai kaksi =-merkkiä, jotta sen pituus on neljällä jaollinen. Yksi = tarkoittaa, että lisättiin yksi täytetavu, == että lisättiin kaksi. Jotkin Base64-muunnelmat, kuten JWT-tunnisteissa käytetty, jättävät täytteen pois.

Mitä eroa on Base64:llä ja Base64Url:llä?

Tavallinen Base64 käyttää 62. ja 63. merkkinä merkkejä + ja /, jotka ovat URL-osoitteissa erikoismerkkejä. Base64Url korvaa merkin + merkillä - ja merkin / merkillä _, jolloin koodattua merkkijonoa voi käyttää URL-osoitteissa ja tiedostonimissä ilman prosenttikoodausta. Base64Url jättää yleensä myös loppuun tulevan =-täytteen pois. JWT-tunnisteet käyttävät tästä syystä Base64Url-koodausta.

Tukeeko työkalu Unicodea ja emojeja?

Kyllä. Työkalu muuntaa tekstin ensin UTF-8-tavuiksi ja koodaa ne sitten Base64-muotoon, ja purkaessaan se muuntaa tuloksen UTF-8-tavuista takaisin tekstiksi. Siksi se käsittelee oikein kaikki Unicode-merkit, kuten tarkkeelliset kirjaimet (é, ä, ö), ei-latinalaiset kirjoitusjärjestelmät (arabia, kiina, kyrillinen) ja emojit (😀, 🎉, ✅). JavaScriptin tavalliset btoa- ja atob-funktiot eivät käsittele monitavuisia merkkejä, joten tämä työkalu käyttää TextEncoder- ja TextDecoder-rajapintoja UTF-8:n oikeaan käsittelyyn.

Miten puran Base64-koodatun kuvan?

HTML-koodiin upotettu Base64-kuva näyttää tältä: <img src="data:image/png;base64,iVBORw0KGgo...">. Purkaaksesi sen kopioi Base64-merkkijono (kaikki pilkun jälkeen), liitä se työkalun Base64-kenttään ja paina Pura. Purettu tulos on raakaa binääridataa, joka ei ole ihmisen luettavaa, koska se on kuvadataa eikä tekstiä. Kuvan näkemiseen tarvitaan data-URL-muoto.

Base64 ohjelmointikielissä

JavaScript/Node.js: btoa(merkkijono) koodaa Base64-muotoon (vain ASCII) ja atob(base64) purkaa. Oikeaa UTF-8-tukea varten muunna merkkijono tavuiksi TextEncoderilla ja käsittele Uint8Array-taulukkona. Python: import base64; base64.b64encode(tavut) ja base64.b64decode(base64_merkkijono). PHP: base64_encode(merkkijono) ja base64_decode(merkkijono). Java: java.util.Base64.getEncoder().encodeToString(tavut) ja Base64.getDecoder().decode(merkkijono). Bash/Linux: echo "teksti" | base64 koodaa ja echo "base64merkkijono" | base64 -d purkaa.