Base64 vysvětlení: proč zvětšuje data a jak ho dekódovat
Base64 zapisuje binární data jako prostý text pomocí 64 znaků: A až Z, a až z, 0 až 9, plus + a /. Každé tři bajty se převedou na čtyři znaky, takže text je zhruba o třetinu delší než data, která obsahuje. Používá se tam, kde formát přijímá jen text, například v datové URL na webové stránce, v poli JSON nebo u přílohy e-mailu.
Proč textové formáty potřebují Base64
Mnoho formátů vzniklo jen pro text. Tělo e-mailu, soubor JSON nebo soubor CSS bezpečně unese písmena a symboly, ale surový obrázek nebo ZIP soubor obsahuje hodnoty bajtů, které by některé systémy změnily, zkrátily nebo vyhodnotily jako řídicí kódy. Base64 používá jen znaky, které každý textový systém předá beze změny, takže data dorazí nepoškozená. Je definován v RFC 4648.
Base64 je kódování, ne tajemství. Kdokoli jej dekóduje bez klíče, proto jej nikdy nepoužívejte ke skrytí hesla nebo osobních údajů.
Jak se tři bajty mění na čtyři znaky
Vezměme slovo Man, což jsou tři bajty: v desítkové soustavě 77, 97 a 110. Dohromady tvoří 24 bitů. Těchto 24 bitů rozdělíme na čtyři skupiny po šesti bitech a každá skupina je číslo od 0 do 63, které odpovídá jednomu znaku abecedy. Man se změní na TWFu.
Šest bitů dokáže vyjádřit jen 64 hodnot, takže čtyři znaky nesou tři bajty. Výstup je proto zhruba o třetinu větší než vstup, a to ještě před přidáním zalomení řádků.
Pokud data nelze rozdělit na skupiny po třech bajtech, kodér doplní konec znaky =. Ma, což jsou dva bajty, se změní na TWE=, a M, což je jeden bajt, na TQ==. Výplň říká dekodéru, kolik bajtů obsahuje poslední skupina.
Text je nejdřív nutné zakódovat do UTF-8
Base64 pracuje s bajty, kdežto text tvoří znaky. Znak jako é nebo ✓ se v UTF-8, kódování používaném na webu, uloží do více než jednoho bajtu. Funkce prohlížeče btoa() vezme řetězec a každý znak považuje za jeden bajt, takže selže u znaků mimo základní latinku. Pokud ji zavoláte se znakem fajfky, vyhodí chybu InvalidCharacterError.
Řešením je nejdřív text převést na bajty UTF-8 a teprve pak tyto bajty zakódovat. Věta héllo ✓ má v UTF-8 10 bajtů a její Base64 je aMOpbGxvIOKckw==. Nástroj Base64 tento krok provede za vás. Při dekódování přečte bajty zpět jako UTF-8. Pokud bajty nejsou platný text v UTF-8, nástroj je bere jako soubor a nabídne stažení.
Base64 bezpečný pro URL
Standardní abeceda obsahuje + a /. V URL může + znamenat mezeru a / odděluje části cesty, takže řetězec Base64 může odkaz rozbít. Verze bezpečná pro URL (RFC 4648, oddíl 5) místo nich používá - a _ a obvykle vynechává výplň =. Použijte ji, když řetězec vkládáte do URL, do názvu souboru nebo do tokenu. Dekodér přijímá obě podoby, s výplní i bez ní.
Pokud Base64 pochází z odkazu, nejdřív dekódujte URL. Hodnotu, která byla v odkazu procentově zakódována, je nutné dekódovat dříve, než lze přečíst její Base64. Průvodce procentovým kódováním vysvětluje pravidla pro odkazy.
Běžným případem je přihlašovací token: JSON Web Token je tvořen třemi částmi Base64url oddělenými tečkami – hlavičkou, daty a podpisem. Dekodér JWT jej rozdělí a zobrazí hlavičku a data jako čitelný JSON.
Datové URL a obrázky
Datová URL vloží soubor přímo do odkazu. Má tvar data:, pak typ média, pak ;base64, pak čárku a samotná data. Malý obrázek se tak změní na data:image/png;base64, následované zakódovanými bajty. Webové stránky a styly tento tvar přijímají, což ušetří požadavek na malou ikonu.
Cenou je velikost. Data jsou zhruba o třetinu větší a putují uvnitř stránky nebo stylu, místo aby šly jako samostatný soubor, který může prohlížeč uložit do mezipaměti. Datové URL používejte pro malé obrázky, ne pro velké fotografie. Pokud je fotografie velká, zkomprimujte ji před kódováním.
Když v nástroji dekódujete Base64, podívá se na první bajty dat. Soubory PNG, JPEG, GIF a WebP začínají známou signaturou, takže nástroj zobrazí náhled a nabídne stažení. Datová URL s typem obrázku se zobrazí také jako obrázek.
Jak to udělat s fixmint
- Nad možností Text nebo Base64 vyberte Kódovat nebo Dekódovat a poté vložte text nebo Base64.
- U tokenů, názvů souborů a odkazů zaškrtněte Abeceda bezpečná pro URL, bez výplně =. Dekodér přijme obě podoby bez ohledu na to.
- Chcete-li z원 souboru vytvořit datovou URL, přetáhněte soubor do oblasti pro přetažení a zaškrtněte Pro soubory: vypsat datovou URL data:.
- Výsledek zkopírujte. Pokud dekódované bajty tvoří soubor, nikoli text, použijte stažení, které nástroj nabídne.
Časté chyby při dekódování
- Znak není povolen. Vstup obsahuje znak mimo těch 64, například uvozovku z zkopírované věty. Zkontrolujte, odkud text pochází. Stejnou chybu způsobí mezera o nulové šířce ve zkopírovaném textu, proto odstraňte skryté znaky a zkuste to znovu. Průvodce skrytými znaky vysvětluje, odkud se berou.
- Délka je špatná. Chybí nebo přebývá znak, což obvykle znamená, že kopírování bylo přerušeno.
- Zalomení řádků a mezery. E-mail (MIME) zalamuje Base64 po 76 znacích. Dekodér odstraní mezery i zalomení řádků, takže zalomený text můžete vložit tak, jak je.
- Chybějící výplň. Některé systémy vynechávají znaky =. Dekodér je doplní zpět.
Okrajové případy
- Dekódovaný výsledek vypadá jako nesmysl. Může jít o soubor, nikoli o text. ZIP soubor, PDF nebo program se dekódují na bajty, které nejsou čitelným textem. Nástroj je nabídne ke stažení.
- Velmi velké vstupy. Celý soubor se při kódování nebo dekódování drží v prohlížeči, takže velmi velký soubor může být pomalý a v telefonu může selhat.
Rychlé odpovědi
Je Base64 totéž co šifrování?
Ne. Je to vratné kódování bez klíče, takže jej může dekódovat kdokoli.
Proč je můj Base64 delší než soubor?
Každé tři bajty se změní na čtyři znaky, takže text je zhruba o třetinu větší.
Proč zkopírovaný řetězec Base64 nelze dekódovat?
Obvykle se při kopírování ztratil nebo přidal znak, například zalomení řádku na špatném místě nebo chybějící poslední znak. Zkopírujte jej znovu ze zdroje.
Přeloženo z Anglický originál s pomocí AI.
Komentáře
Zatím žádné komentáře. Buďte první.


