Přeskočit na obsah
TextArray

Vysvětlení kódování Base64: co to je a kdy jej použít

Blog /

Base64 je ve vývoji webu všude – je zabudován do hlaviček e-mailů, zapečen do datových URI, používá se v autentizačních tokenech a zabalený kolem binárních souborů v textových protokolech. Ale co to vlastně je? A pokud zakóduje data, není to bezpečné? Odpověď zní ne: Base64 je kódování, ne šifrování. Je to způsob, jak reprezentovat binární nebo libovolná data jako prostý ASCII text, nic víc. Pochopení, kdy a proč jej použít, může objasnit spoustu matoucích momentů ve vývoji.

Co je Base64?

Base64 je metoda kódování binárních dat do 64 bezpečných znaků ASCII – písmen A–Z, a–z, číslic 0–9, znamének plus a lomítek. Funguje tak, že vezme binární vstup (ať už text, obrázky nebo nezpracované bajty) a rozdělí ho na 6bitové části. Každý blok se stane indexem do abecedy Base64, takže výstupem je vždy čitelný text. „64“ označuje velikost abecedy: 26 + 26 + 10 + 2 = 64 znaků.

Proč 64? Protože tyto znaky jsou bezpečné téměř ve všech systémech – e-mail, staré terminály, XML, JSON a prostý text. Binární soubor se může při přenosu poškodit, pokud jsou speciální bajty špatně interpretovány; Base64 zaručuje, že výstup přežije beze změny prostřednictvím jakéhokoli textového kanálu. Můžete kódovat a dekódovat Base64 okamžitě ve vašem prohlížeči, aniž byste kamkoli nahrávali svá data.

Base64 není šifrování

Toto je kritický rozdíl: Base64 zakóduje vzhled dat, ale kdokoli jej může zvrátit. Pokud heslo zakódujete pomocí Base64 secret123, stává se c2VjcmV0MTIz — ale to není bezpečné. Dekódování je stejně triviální. Base64 je zmatek pro přenos, nikoli ochrana pro bezpečnost. Pokud potřebujete uchovat data v tajnosti, použijte šifrování (jako AES), nikoli Base64. Base64 je způsob, jak bezpečně odesíláte šifrovaná data prostřednictvím textového kanálu, ale není to samotné šifrování.

Běžná použití Base64

Base64 je standardem v několika reálných scénářích:

  1. Identifikátory URI dat. Místo odkazování na soubor obrázku můžete obrázek vložit přímo do HTML nebo CSS jako datový URI: data:image/png;base64,iVBORw0KG…. Vyhnete se tak dodatečnému požadavku HTTP, který je užitečný pro malé ikony nebo v případech, kdy aktiva nelze hostovat samostatně.
  2. Přílohy e-mailu. SMTP (e-mailový protokol) byl navržen pro text. Binární přílohy jsou před odesláním zakódovány pomocí Base64 a po obdržení je váš poštovní klient dekóduje.
  3. Autentizační tokeny. Mnoho rozhraní API používá Base64 pro tokeny – ne kvůli bezpečnosti, ale protože tokeny jsou často binární data, která je třeba přenášet jako čitelný text v záhlaví nebo URL.
  4. Vkládání souborů ve formátu JSON nebo XML. Pokud potřebujete do odpovědi JSON API zahrnout binární blob (PDF, tabulku, archiv), Base64 jej zakóduje jako řetězec, který nenaruší strukturu JSON.

Velikost režie: Base64 zvětšuje data

Nevýhoda: Výstup Base64 je asi o 33 % větší než původní binární. Je to proto, že balíte 8 bitů vstupu do 6bitových bloků a padding je potřeba, když délka vstupu není násobkem 3. Pokud tedy vkládáte 300 KB obrázek jako URI dat, verze Base64 má zhruba 400 KB – pomalejší načítání a analyzování. U malých ikon tato režie stojí za uložený požadavek HTTP; u velkých souborů je obvykle lepší je propojit samostatně.

Varianty a související kódování

Standardní použití Base64 + a /, které mají zvláštní význam v adresách URL a názvech souborů. URL-safe Base64 náhražky - a _ místo toho je bezpečný pro použití v cestách a řetězcích dotazů bez kódování procent. Pokud vytváříte vlastní schéma kódování URL, zvažte, zda Kódování URL nebo URL-safe Base64 vyhovuje vašim potřebám.

Base64 je jedno z několika kódování, které řeší různé problémy. Hexadecimální kódování představuje binární jako dva čitelné znaky na bajt (pomalejší k dekódování, ale bez odsazení a čitelné pro člověka), často používané v hash a kontrolních součtech. HTML entity zakódovat speciální znaky jako < a & takže se na webových stránkách zobrazují správně – odlišný problém od libovolného binárního přenosu. Každé kódování je nástrojem pro konkrétní úlohu.

`,