Co je Base64 a proč vzniklo
Base64 je kódovací schéma pro převod binárních dat na text. Vezme syrové bajty - data, ze kterých se skládají obrázky, archivy, kryptografické klíče nebo cokoliv jiného, co není běžný čitelný text - a přepíše je pomocí malé, bezpečné abecedy 64 tisknutelných znaků: 26 velkých písmen A-Z, 26 malých písmen a-z, deseti číslic 0-9 a dvou dalších symbolů, obvykle + a /. Na konci se pro doplnění délky používá znak rovnítka. Protože každý znak, který vytvoří, je běžné ASCII, výsledek dokáže projít systémy, které byly navrženy jen pro práci s textem.
To je celý důvod, proč Base64 vzniklo. Řada starších protokolů - klasickým příkladem je e-mail - předpokládá, že přenášený obsah je text. Pokud jim předáte syrová binární data, některé bajty se poškodí, ořežou nebo vyloží jako řídicí znaky a data dorazí poškozená. Base64 tento problém obchází tím, že bajty převede do formy, kterou jakýkoliv textově bezpečný kanál propustí beze změny. Původní data pak lze na druhé straně přesně zrekonstruovat.

Jak převod funguje
Mechanicky Base64 seskupí vstup do bloků po třech bajtech - tedy 24 bitech - a těchto stejných 24 bitů znovu rozřeže na čtyři skupiny po šesti bitech. Šest bitů dokáže reprezentovat 64 možných hodnot, a přesně proto má abeceda 64 znaků. Tři vstupní bajty se tak vždy promění ve čtyři výstupní znaky. Když délka vstupu není čistý násobek tří, kodér poslední skupinu doplní jedním nebo dvěma znaky =, aby dekodér poznal, kde skutečná data končí.
Tento poměr čtyři ku třem je také zdrojem známé penalizace velikosti: výstup Base64 je zhruba o 33 % větší než původní data. Pokud je zakódovaný text zalomen do řádků pevné šířky, jak to často vyžadují e-mailové standardy, připočtou se navrch ještě další procenta za zalomení řádků. Tato režie je cenou za kompatibilitu a pro většinu použití je to poctivá výměna.
Kde se s Base64 setkáte
Jakmile víte, co hledat, Base64 se objevuje takřka všude v běžné informatice:
- Data URI. Malý obrázek nebo font lze vložit přímo do HTML nebo CSS pomocí
data:URI, přičemž obsah souboru je zapsán jako Base64. Prohlížeč jej dekóduje přímo na místě, čímž ušetří samostatný síťový požadavek. - E-mailové přílohy. MIME, standard, díky kterému e-mail umí přenášet soubory, se opírá o Base64, aby binární přílohy prošly čistě textovým poštovním systémem bez poškození.
- HTTP Basic autentizace. Známá hlavička
Authorization: Basic ...je jen uživatelské jméno a heslo spojené dvojtečkou a zakódované do Base64 - a přesně proto musí Basic autentizace vždy běžet přes HTTPS. - Tokeny a konfigurace. JSON Web Tokeny, certifikáty, SSH klíče a bezpočet konfiguračních hodnot se ukládají nebo přenášejí jako Base64, aby přežily kopírování a vkládání i textové úložiště.
Kódování není šifrování
Toto je jedna jediná nejdůležitější věc, kterou je třeba pochopit, a chytá do pasti stejně začátečníky jako zkušené vývojáře. Base64 není šifrování a neposkytuje vůbec žádnou bezpečnost. Neexistuje žádný tajný klíč, žádné heslo a nic soukromého na tom není. Transformace je zcela veřejná a plně reverzibilní: kdokoliv uvidí řetězec Base64, dokáže ho během vteřiny dekódovat zpět na původní bajty, a to přesně pomocí nástroje, jako je tento.
Base64 je tedy chabý úkryt pro hesla, API klíče nebo jakoukoliv citlivou hodnotu. Pokud řetězec pouze vypadá zamotaně, neznamená to, že je chráněný. Šifrování naproti tomu transformuje data pomocí tajného klíče tak, že je dokáže přečíst pouze ten, kdo daný klíč vlastní. Obě řeší odlišné problémy: šifrování chrání důvěrnost, Base64 chrání kompatibilitu. Často se používají společně - data můžete zašifrovat pomocí AES a poté zakódovat šifrový text do Base64, aby mohl projít textovým kanálem - ale jedno nikdy nenahrazuje druhé.

Kódování vs dekódování
Oba směry jsou jednoduchá zrcadlová operace. Kódování vezme váš původní text nebo binární data a vytvoří z nich řetězec znaků Base64. Dekódování vezme řetězec Base64 a zrekonstruuje přesně původní bajty. Náš nástroj zvládá obojí přímo ve vašem prohlížeči - nic, co napíšete nebo vložíte, se nikdy neodesílá na server, takže operace probíhá zcela lokálně a soukromě. Díky tomu je bezpečné dekódovat token, který právě ladíte, nebo zakódovat úryvek, jenž chcete vložit, aniž by vaše data opustila stránku.
Pro související převody se podívejte na náš nástroj URL kódování/dekódování pro procentní kódování, nebo dekodér JWT, když potřebujete prozkoumat segmenty Base64 uvnitř tokenu. Najdete je vedle zbytku našich nástrojů pro vývojáře.
Často kladené otázky
Je Base64 formou šifrování?
Ne. Base64 je kódování, nikoliv šifrování. Nepoužívá žádný klíč a kdokoliv ho může plně reverzovat, takže neposkytuje žádnou bezpečnost. Pro ochranu citlivých dat používejte skutečné šifrování, jako je AES nebo RSA.
Proč Base64 zvětšuje data?
Base64 promění každé tři bajty vstupu na čtyři výstupní znaky, což přidává zhruba 33 % k velikosti. Pokud je výstup rozdělen do řádků pevné délky, zalomení řádků přidají navrch ještě pár procent.
Jaké znaky Base64 používá?
Standardní abeceda je 26 velkých písmen, 26 malých písmen, číslice 0 až 9, plus symboly plus a lomítko, přičemž rovnítko se používá pro doplnění na konci.
Mohu bezpečně ukládat hesla v Base64?
Ne. Base64 pouze mění, jak data vypadají, ne kdo si je může přečíst. Kdokoliv to dokáže okamžitě dekódovat. Hesla by měla být hashována silným algoritmem a tajemství by měla být šifrována.
Je tento nástroj Base64 soukromý?
Ano. Kódování i dekódování probíhá zcela ve vašem prohlížeči. Nic, co zadáte, se neodesílá ani neposílá na žádný server, takže vaše data zůstávají na vašem vlastním zařízení.
Jaký je rozdíl mezi kódováním a dekódováním?
Kódování převádí původní text nebo binární data na řetězec Base64. Dekódování to obrací a mění řetězec Base64 zpět na přesně původní bajty. Jde o zrcadlové operace.
