Base64 kódování a dekódování
Převeďte text nebo soubor do Base64, nebo dekódujte Base64 zpět na čitelný text. Unicode se zpracuje správně, abecedu bezpečnou pro URL zapnete jedním kliknutím a dekódování přijme obě abecedy s doplněním i bez něj.
0 znaků · 0 slov · 0 řádků
0 znaků · 0 slov · 0 řádků
Vše běží přímo v této záložce prohlížeče. Váš text se nikam nenahrává ani neukládá.
Abeceda Base64
Index → znak podle RFC 4648. Zvýrazněné poslední dva se ve variantě bezpečné pro URL liší: 62 je + nebo -, 63 je / nebo _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
Jak dlouhý bude výstup
Každé 3 vstupní bajty se změní na 4 znaky; poslední skupina 1 nebo 2 bajtů se ve standardním Base64 doplní znakem = a ve variantě bezpečné pro URL zůstane bez doplnění.
| Vstup | Bajty | Standardní | Bezpečné pro URL | Délka |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
Co dělá Base64
Base64, definované v RFC 4648, zapisuje libovolné bajty pomocí 64 tisknutelných znaků ASCII: A–Z, a–z, 0–9, + a /. Každá skupina tří bajtů (24 bitů) se rozdělí na čtyři 6bitová čísla a každé číslo vybere jeden znak z abecedy. Pokud délka vstupu není násobkem tří, doplní se do poslední skupiny jedno nebo dvě znaménka =. Výsledek je vždy zhruba o 33 % větší než vstup: 4 znaky na každé 3 bajty.
Existuje proto, že mnoho přenosových kanálů vzniklo pro text. E-mail (MIME), adresy data: v HTML a CSS, pole JSON s obrázky nebo certifikáty a hlavičky HTTP Basic autentizace využívají Base64 k bezpečnému přenosu binárních dat. Není to šifrování a nic neskrývá; k dekódování není potřeba žádný klíč.
Unicode a varianta bezpečná pro URL
Base64 kóduje bajty, ne písmena, takže se text musí nejprve převést na bajty. Tento nástroj vždy používá UTF-8, kódování, na kterém běží web: é se změní na dva bajty a emoji na čtyři. Samotná vestavěná funkce prohlížeče btoa vyvolá chybu u každého znaku nad U+00FF, proto jednoduché kodéry selhávají na diakritice a emoji; tady text nejdřív projde přes TextEncoder a dekódování to obrátí pomocí TextDecoder. Pokud dekódované bajty nejsou platné UTF-8 (obrázek, soubor zip), nástroj je místo nesmyslného textu zobrazí šestnáctkově.
Standardní Base64 používá + a /, které mají v adresách URL a názvech souborů zvláštní význam. URL-safe abeceda z oddílu 5 RFC 4648 je nahrazuje znaky - a _ a odsazení se obvykle vynechává. Přesně tuto podobu používají JSON Web Tokeny. Dekodér přijímá obě abecedy i chybějící odsazení, takže můžete vložit kteroukoli variantu.
Kódování souborů a obrázků
Vyberte soubor a nástroj jej načte lokálně pomocí FileReader a vrátí jeho Base64 nebo úplnou adresu data: s typem MIME souboru, kterou stačí vložit do značky img nebo do pozadí v CSS. Vložené obrázky ušetří jeden požadavek HTTP, ale zvětší se o třetinu a nelze je ukládat do mezipaměti zvlášť, takže se hodí spíš pro malé ikony než pro fotky. Pro obrázky s náhledem a hotovými úryvky HTML a CSS použijte Obrázek do Base64.
Často kladené otázky
- Proč je výstup v Base64 delší než vstup?
- Každé 3 bajty se změní na 4 znaky, takže výstup je zhruba 4/3 velikosti vstupu plus až dva znaky odsazení. Text mimo ASCII je ještě delší, protože UTF-8 používá na znak dva až čtyři bajty.
- Co znamenají znaky = na konci?
- Odsazení. Díky nim je délka výstupu násobkem čtyř, i když délka vstupu není násobkem tří. Jedno = znamená, že poslední skupina měla dva bajty, dvě == znamenají jeden bajt.
- Proč dekódování selže s chybou neplatného znaku?
- Vstup obsahuje něco mimo abecedu, například mezeru uvnitř slova, uvozovku nebo % z kódování URL. Zalomení řádků a chybějící odsazení nevadí, jiné znaky ano.
- Je bezpečné zakódovat heslo do Base64?
- Base64 žádnou ochranu neposkytuje. HTTP Basic autentizace posílá user:password v Base64, proto se smí používat jen přes HTTPS. K ochraně tajných údajů použijte skutečné šifrování nebo hashování.
- Jaký je rozdíl mezi Base64 a Base64url?
- Jen dva znaky a odsazení: Base64url používá - a _ místo + a / a obvykle vynechává =, takže výsledek může být v adresách URL a názvech souborů bez escapování.