Mi az a Base64, és miért létezik
A Base64 egy bináris-szöveg kódolási eljárás. A nyers byte-okat - vagyis azt az adatot, amelyből képek, archívumok, kriptográfiai kulcsok és minden más, ami nem sima olvasható szöveg, épül fel - egy kicsi, biztonságos, 64 nyomtatható karakterből álló ábécével írja át: a 26 nagybetűvel A-tól Z-ig, a 26 kisbetűvel a-tól z-ig, a tíz számjeggyel 0-tól 9-ig, valamint két további szimbólummal, jellemzően + és /. Az egyenlőségjelet kitöltésre használja a végén. Mivel minden karakter, amit előállít, sima ASCII, az eredmény olyan rendszereken is átjut, amelyeket eredetileg kizárólag szöveg kezelésére terveztek.
Ez a teljes oka annak, hogy a Base64-et kitalálták. Sok régebbi protokoll - az e-mail a klasszikus példa - feltételezi, hogy a hordozott tartalom szöveg. Ha nyers bináris adatot adsz nekik, egyes byte-ok megsérülnek, elvesznek, vagy vezérlőkarakterként értelmeződnek, és az adat sérülten érkezik meg. A Base64 megkerüli a problémát azzal, hogy a byte-okat olyan formára alakítja, amelyen bármely szövegbiztos csatorna érintetlenül átenged. Az eredeti adat a másik oldalon pontosan visszaállítható.

Hogyan működik az átalakítás
Mechanikusan a Base64 a bemenetet háromelemű byte-csoportokba - azaz 24 bitbe - rendezi, majd ezt a 24 bitet négy, egyenként hat bites csoportra szeleteli tovább. Hat bit 64 lehetséges értéket tud kifejezni, és pontosan ezért van az ábécének 64 karaktere. Így három bemeneti byte mindig négy kimeneti karakterré alakul. Ha a bemenet hossza nem osztható tisztán hárommal, a kódoló egy vagy két = karakterrel tölti ki az utolsó csoportot, hogy a dekóder tudja, hol ér véget a valódi adat.
Ez a négy-a-háromhoz arány az oka annak a híres méretnövekedésnek is: a Base64 kimenete nagyjából 33%-kal nagyobb, mint az eredeti adat. Ha a kódolt szöveget fix szélességű sorokba tördelik, amit az e-mail szabványok gyakran megkövetelnek, erre még rájön néhány százaléknyi többlet a sortörések miatt. A felülírás ára a kompatibilitásért cserébe a legtöbb felhasználásban megéri.
Hol találkozol a Base64-gyel
Ha egyszer tudod, mit keress, a Base64 szinte mindenhol felbukkan a mindennapi számítástechnikában:
- Data URI-k. Egy kis kép vagy betűtípus közvetlenül beágyazható HTML-be vagy CSS-be egy
data:URI-val, amelyben a fájl tartalma Base64 formában szerepel. A böngésző soron belül dekódolja, így megspórol egy külön hálózati kérést. - E-mail mellékletek. A MIME, amely lehetővé teszi, hogy az e-mail fájlokat is hordozzon, a Base64-re támaszkodik, hogy a bináris mellékleteket sértetlenül továbbítsa egy kizárólag szöveges levelezőrendszeren keresztül.
- HTTP Basic hitelesítés. Az ismerős
Authorization: Basic ...fejléc nem más, mint egy felhasználónév és jelszó, kettősponttal összefűzve és Base64-gyel kódolva - pontosan ezért kell a Basic hitelesítésnek mindig HTTPS-en keresztül futnia. - Tokenek és konfiguráció. JSON Web Tokenek, tanúsítványok, SSH-kulcsok és számtalan konfigurációs érték kerül tárolásra vagy továbbításra Base64 formában, hogy túléljék a másolás-beillesztést és a szöveges alapú tárolást.
A kódolás nem titkosítás
Ez a legfontosabb dolog, amit meg kell érteni, és ez az, amin kezdők és tapasztalt fejlesztők egyaránt elcsúsznak. A Base64 nem titkosítás, és semmilyen biztonságot nem nyújt. Nincs titkos kulcs, nincs jelszó, és semmi bizalmas nincs benne. Az átalakítás teljesen nyilvános és teljesen visszafordítható: bárki, aki lát egy Base64 karakterláncot, egy másodperc alatt visszafejtheti az eredeti byte-okra, akár pontosan egy ilyen eszközzel is.
Így a Base64 gyenge rejtekhely jelszavak, API-kulcsok vagy bármilyen érzékeny érték számára. Ha egy karakterlánc csupán összekevertnek tűnik, attól még nem védett. A titkosítás ezzel szemben egy titkos kulccsal alakítja át az adatot úgy, hogy csak az tudja elolvasni, aki birtokolja azt a kulcsot. A kettő más problémát old meg: a titkosítás a bizalmasságot védi, a Base64 a kompatibilitást. Gyakran együtt is alkalmazzák őket - például titkosíthatod az adatot AES-sel, majd Base64-gyel kódolod a titkosított szöveget, hogy egy szöveges csatornán is átjusson -, de az egyik soha nem helyettesíti a másikat.

Kódolás versus dekódolás
A két irány egyszerű tükörképe egymásnak. A kódolás az eredeti szöveget vagy bináris adatot Base64 karakterlánccá alakítja. A dekódolás egy Base64 karakterláncból állítja vissza a pontos eredeti byte-okat. Eszközünk mindkét irányt közvetlenül a böngésződben végzi el - semmi, amit begépelsz vagy beillesztesz, nem kerül szerverre, így a művelet teljesen helyi és privát. Ez biztonságossá teszi egy éppen debuggolt token dekódolását vagy egy beágyazni kívánt kódrészlet kódolását, anélkül hogy az adatod elhagyná az oldalt.
Kapcsolódó átalakításokért nézd meg URL kódoló/dekódoló eszközünket a százalékos kódoláshoz, vagy a JWT dekódolót, ha egy token belsejében lévő Base64 szegmenseket kell megvizsgálnod. Ezeket és a többi fejlesztői eszközünket egy helyen találod.
Gyakran ismételt kérdések
A Base64 egyfajta titkosítás?
Nem. A Base64 kódolás, nem titkosítás. Nem használ kulcsot, és bárki számára teljesen visszafejthető, így semmilyen biztonságot nem nyújt. Az érzékeny adatok védelmére valódi titkosítást, például AES-t vagy RSA-t használj.
Miért lesz nagyobb az adat a Base64-től?
A Base64 minden három bemeneti byte-ot négy kimeneti karakterré alakít, ami nagyjából 33%-kal növeli a méretet. Ha a kimenetet fix hosszúságú sorokra tördelik, a sortörések ehhez még hozzáadnak néhány százalékot.
Milyen karaktereket használ a Base64?
A szabványos ábécé a 26 nagybetűből, 26 kisbetűből, a 0-tól 9-ig terjedő számjegyekből, valamint a plusz és a per jelből áll, az egyenlőségjelet pedig a végén kitöltésre használják.
Biztonságosan tárolhatok jelszavakat Base64-ben?
Nem. A Base64 csak azt változtatja meg, hogyan néz ki az adat, azt nem, hogy ki olvashatja el. Bárki azonnal visszafejtheti. A jelszavakat erős algoritmussal kell hashelni, a titkokat pedig titkosítani kell.
Privát ez a Base64 eszköz?
Igen. A kódolás és a dekódolás teljes egészében a böngésződben zajlik. Semmi, amit beírsz, nem kerül feltöltésre vagy elküldésre semmilyen szerverre, így az adatod a saját eszközödön marad.
Mi a különbség a kódolás és a dekódolás között?
A kódolás az eredeti szöveget vagy bináris adatot Base64 karakterlánccá alakítja. A dekódolás ennek fordítottja, egy Base64 karakterláncot alakít vissza a pontos eredeti byte-okká. A két művelet egymás tükörképe.
