A Base64 magyarázata: miért nő meg az adat, és hogyan dekódolható
A Base64 bináris adatot ír le egyszerű szövegként, 64 karakterrel: A–Z, a–z, 0–9, valamint + és /. Minden három bájt négy karakterré válik, ezért a szöveg körülbelül egyharmadával hosszabb, mint az adat, amit hordoz. Akkor használják, ha a formátum csak szöveget fogad el, például webes oldal data URL-jében, JSON-mezőben vagy e-mail-mellékletben.
Miért van szükség rá a szöveges formátumokban
Sok formátumot kizárólag szövegre terveztek. Egy e-mail törzse, egy JSON-fájl és egy CSS-fájl biztonságosan tartalmazhat betűket és jeleket, de egy nyers kép vagy zip-fájl olyan bájtértékeket tartalmaz, amelyeket egyes rendszerek megváltoztathatnak, levághatnak vagy vezérlőkódként értelmezhetnek. A Base64 csak olyan karaktereket használ, amelyeket minden szöveges rendszer változatlanul továbbít, így az adat sértetlenül megérkezik. Az RFC 4648 szabvány határozza meg.
A Base64 kódolás, nem titkosítás. Bárki dekódolhatja kulcs nélkül, ezért jelszó vagy személyes adat elrejtésére soha nem szabad használni.
Hogyan lesz három bájtból négy karakter
Vegyük a Man szót, amely három bájt: tízes számrendszerben 77, 97 és 110. Ez együtt 24 bit. A 24 bitet négy, egyenként hat bites csoportra osztjuk, és minden csoport egy 0 és 63 közötti számot jelent, amely az ábécé egy karakteréhez tartozik. A Man így TWFu lesz.
Hat bit csak 64 értéket tud megnevezni, ezért négy karakter hordoz három bájtot. A kimenet ezért körülbelül egyharmadával nagyobb a bemenetnél, a sortörések hozzáadása előtt.
Ha az adat nem osztható három bájtra, a kódoló a végét =-jelekkel tölti ki. A Ma, amely két bájt, TWE=-vé válik, az M, amely egy bájt, TQ==-vé. A kitöltés megmondja a dekódolónak, hány bájt van az utolsó csoportban.
A szöveget előbb UTF-8-ra kell alakítani
A Base64 bájtokon dolgozik, a szöveg pedig karakterekből áll. Az olyan karakterek, mint az é vagy a ✓, az UTF-8-ban, a weben általánosan használt kódolásban több bájtot foglalnak el. A btoa() böngészőfüggvény a karakterláncot kapja, és minden karaktert egy bájtnak tekint, ezért elbukik az alap latin tartomány fölötti karaktereken. Ha egy pipa jelre hívjuk, InvalidCharacterError hibát dob.
A megoldás az, hogy a szöveget előbb UTF-8 bájtokká alakítjuk, és csak utána kódoljuk ezeket a bájtokat. A héllo ✓ kifejezés UTF-8-ban 10 bájt, Base64-es alakja pedig aMOpbGxvIOKckw==. A Base64 kódoló és dekódoló ezt a lépést elvégzi helyetted. Dekódoláskor a bájtokat UTF-8-ként olvassa vissza. Ha a bájtok nem érvényes UTF-8 szöveg, az eszköz fájlként kezeli őket, és letöltést ajánl.
URL-biztos Base64
A szabványos ábécé a + és a / jeleket tartalmazza. URL-ben a + szóközt is jelenthet, a / pedig az útvonal részeit választja el, ezért a Base64 karakterlánc megtörheti a linket. Az URL-biztos forma (RFC 4648, 5. szakasz) helyette - és _ jeleket használ, és általában elhagyja az = kitöltést. Használd, ha a karakterlánc URL-be, fájlnévbe vagy tokenbe kerül. A dekódoló mindkét formát elfogadja, kitöltéssel vagy anélkül.
Ha a Base64 egy linkből származik, előbb dekódold az URL-t. A linkben százalékosan kódolt értéket előbb dekódolni kell, mielőtt a Base64 olvasható lenne. A százalékos kódolásról szóló útmutató elmagyarázza a linkekre vonatkozó szabályokat.
A bejelentkezési token a leggyakoribb eset: a JSON Web Token három, pontokkal összefűzött Base64url-részből áll: fejléc, adat és aláírás. A JWT dekódoló szétbontja, és a fejlécet és az adatot olvasható JSON-ként mutatja meg.
Data URL-ek és képek
A data URL magát a fájlt a linkbe teszi. Alakja: data:, majd a médiatípus, majd ;base64, végül vessző és az adat. Egy kis kép data:image/png;base64, alakot kap, amelyet a kódolt bájtok követnek. Weboldalak és stíluslapok elfogadják ezt a formát, ami egy kis ikon esetén spórol egy kérést.
Az ára a méret. Az adat körülbelül egyharmadával nagyobb, és az oldal vagy a stíluslap részeként utazik, nem külön fájlként, amelyet a böngésző gyorsítótárazhat. Data URL-t kis képekhez használj, nagy fotókhoz ne. Ha a fotó nagy, tömörítsd kódolás előtt.
Amikor az eszközben Base64-et dekódolsz, az adat első bájtjait vizsgálja. A PNG, JPEG, GIF és WebP fájlok mindegyike ismert azonosítóval kezdődik, így az eszköz előnézetet mutat és letöltést ajánl. Az olyan data URL-t, amelynek képtípusa van, szintén képként jeleníti meg.
Lépésről lépésre a fixminttel
- Válaszd a Kódolás vagy a Dekódolás lehetőséget a Szöveg vagy Base64 felett, majd illeszd be a szöveget vagy a Base64-et.
- Pipáld be az URL-biztos ábécé, = kitöltés nélkül opciót tokenekhez, fájlnevekhez és linkekhez. A dekódoló így is, úgy is elfogadja.
- Fájlból data URL készítéséhez húzd a fájlt a feltöltőterületre, és pipáld be a Fájlok esetén: data: URL kimenet opciót.
- Másold ki az eredményt. Ha a dekódolt bájtok szöveg helyett fájl, használd az eszköz által felajánlott letöltést.
Gyakori dekódolási hibák
- Nem engedélyezett karakter. A bemenet a 64-en kívüli karaktert tartalmaz, például idézőjelet egy másolt mondatból. Nézd meg, honnan származik a szöveg. A másolt szövegben lévő nulla szélességű szóköz ugyanezt a hibát okozza, ezért távolítsd el a rejtett karaktereket, és próbáld újra. A rejtett karakterekről szóló útmutató megmutatja, honnan kerülnek elő.
- Hibás hossz. Hiányzik vagy felesleges egy karakter, ami általában azt jelenti, hogy a másolás félbeszakadt.
- Sortörések és szóközök. Az e-mail (MIME) 76 karakterenként tördeli a Base64-et. A dekódoló eltávolítja a szóközöket és sortöréseket, így a tördelt szöveget úgy illesztheted be, ahogy van.
- Hiányzó kitöltés. Egyes rendszerek elhagyják az =-jeleket. A dekódoló visszateszi őket.
Különleges esetek
- A dekódolt eredmény értelmetlennek tűnik. Lehet, hogy fájl, nem szöveg. Egy zip-fájl, PDF vagy program olyan bájtokra dekódolódik, amelyek nem olvashatók szövegként. Az eszköz ezeket letöltésként kínálja fel.
- Nagyon nagy bemenetek. A teljes fájl a böngészőben marad a kódolás vagy dekódolás idejére, ezért egy nagyon nagy fájl lassú lehet, telefonon pedig hibázhat.
Rövid válaszok
Ugyanaz a Base64, mint a titkosítás?
Nem. Visszafordítható kódolás, kulcs nélkül, ezért bárki dekódolhatja.
Miért hosszabb a Base64 a fájlnál?
Minden három bájt négy karakterré lesz, ezért a szöveg körülbelül egyharmadával nagyobb.
Miért nem dekódolódik a másolt Base64-karakterlánc?
Általában egy karakter elveszett vagy hozzáadódott másoláskor, például rossz helyen lévő sortörés vagy hiányzó utolsó karakter. Másold ki újra a forrásból.
A Angol eredeti alapján, MI segítségével fordítva.
Hozzászólások
Még nincs hozzászólás. Legyél te az első.


