Kodér a dekodér Base64

Zakódujte text do Base64 nebo dekódujte Base64 zpět na čitelný text. Podporuje čtyři režimy formátu: Řetězec, JSON, XML a YAML. JSON/XML/YAML se při dekódování automaticky formátují. Dále: Převodník obrázků do Base64 | Soubor do Base64 | Hex ↔ Base64.
Veškeré zpracování probíhá lokálně ve vašem prohlížeči — vaše data se nikdy nenahrávají na žádný server.
Formát: Směr:
Abeceda: Zalomení řádků:
What is Base64? Base64 is a binary-to-text encoding scheme that represents data using 64 ASCII characters (A-Z, a-z, 0-9, +, /). It is commonly used to transmit binary data over text-based protocols like HTTP, JSON, or XML.
String mode: Direct encode/decode of any text.
JSON/XML/YAML modes: When decoding, the result is validated, parsed, and pretty-printed for readability. When encoding, the input is validated before being Base64-encoded.
URL-safe: Replaces + with - and / with _, and strips trailing = padding — safe to use in URLs and filenames without percent-encoding.
Co je Base64?

Base64 přepisuje bajty pomocí šedesáti čtyř čitelných znaků, aby data přežila kanál vytvořený pro text: tělo e-mailu, řetězec JSON, atribut XML, URL. Každé tři bajty se stanou čtyřmi znaky, odtud název — abeceda má šedesát čtyři symboly a každý nese přesně šest bitů.

Je to přenosové kódování, ne bezpečnostní opatření a ne krok komprese. Výstup je zhruba o třetinu větší než vstup a každý, kdo má řetězec, jej může hned vrátit zpět. Chcete-li vědět, zda byla data změněna, použijte hash (Generátor hashů); chcete-li, aby zůstala tajná, použijte šifrování. Base64 nedělá ani jedno.

Jediné číslo, které si zapamatujte: tři vstupní bajty se stanou čtyřmi výstupními znaky. Všechno ostatní na této stránce z toho plyne. Čtyři znaky nesou dvacet čtyři bitů a dvacet čtyři bitů je přesně tři bajty, takže žádná data nikdy nezmizí ani nevzniknou navíc — kromě úplného konce, kde vstup nemusí zaplnit poslední skupinu tří.
Pět abeced, které může tato stránka použít

První dva řádky jsou standardy a poslední tři jsou konvence, které vznikly v prostředí Unixu. Všech pět nese stejných šest bitů na znak a liší se jen v tom, kterých šedesát čtyři znaků ten přenos zajišťuje, takže stejné bajty se stanou pěti různými řetězci. Uvnitř řetězce není nic, co by řeklo, která abeceda jej vytvořila, proto je volič abecedy výchozí na standardní a zaškrtávací políčko pro bezpečnost URL je jen zkratkou pro druhý řádek.

Jak stránka vybírá kandidáta: volič je výchozí pro oba směry. Při dekódování panel vpravo čte i samotný řetězec — - a _ mohou pocházet jen z abecedy bezpečné pro URL, + nebo / jen ze standardní, a / nebo . blízko začátku ukazuje na dvě abecedy z Unixu. Každá abeceda, která může číst aktuální vstup, je tam uvedena s důvodem, proč je, nebo není, kandidátem.
Zalamování řádků: 76 a 64 znaků

MIME chtěl Base64, který se vejde do e-mailu, aniž by se některý řádek nepřiměřeně prodloužil, a ustálil se na 76 znacích na řádek oddělených CRLF. PEM soubory, které obalují certifikáty a klíče, používají 64. Zalomení řádků nejsou součástí dat: dekodér je odstraní a řádky spojí zpět dřív, než udělá cokoli jiného, takže zabalený a nezabalený řetězec se dekódují na přesně tytéž bajty. Každý řádek kromě posledního obsahuje celý počet čtyřznakových skupin, což je důvod, proč je jejich bezpečné spojení zpět.

Tato stránka nechává výstup na jednom řádku, pokud nevyberete šířku, a dekodér přijme vstup se zalomením i bez něj. Zalomení, která tato stránka zapisuje, jsou prosté konce řádků, což textové pole unese; těla e-mailů MIME tradičně používají návrat vozíku před každým koncem řádku a každý dekodér v používání přijme obojí.

Výplň a proč ji lze vynechat

Když vstup není násobkem tří bajtů, poslední skupina čtyř znaků je neúplná a doplní ji jeden nebo dva znaky =. Nenesou žádná data: jen říkají, kolik ze čtyř znaků je skutečných. Dekodér to umí spočítat z délky, proto bezpečný Base64 pro URL tradičně výplň vynechává — = je v URL nebo v názvu souboru nepohodlné a některé systémy jej procentně kódují.

Zaškrtávací políčko v řádku voleb ponechá výplň, když je zvolena abeceda bezpečná pro URL. Nic dalšího se nemění; znaky, které nesou data, jsou v obou případech totožné.

Časté nedorozumění
  • "Base64 skrývá data." Nic takového. Je to záměna bez klíče a celý smysl je v tom, že ji může vrátit kdokoli. Zabalení hesla nebo tokenu do Base64 nezmění, kdo jej může přečíst.
  • "Base64 komprimuje." Opak je pravdou: každé tři vstupní bajty se stanou čtyřmi výstupními znaky, takže text je o třetinu větší než data, která nese.
  • "Zalomení řádků jsou součástí hodnoty." Jsou to jen zobrazení. Jejich přidání nebo odebrání nikdy nezmění bajty, které se vrátí.
  • "Bezpečné pro URL znamená jiné kódování." Je to tentýž postup se dvěma prohozenými znaky: + se změní na - a / na _, takže řetězec může být v cestě URL nebo v hodnotě dotazu bez escapování.
  • "Řetězec, který se dekóduje, musí být platný Base64." Jakýkoli řetězec znaků abecedy je platný Base64, protože každá kombinace šestibitových hodnot je platná posloupnost bajtů. Řetězec se ukáže jako špatný až v dalším kroku, kdy se tyto bajty zkontrolují proti formátu, který měly představovat.
  • "Výplň říká, která abeceda se použila." Neříká, a většinou to neříkají ani znaky: standardní a bezpečná abeceda se shodují na šedesáti dvou ze svých šedesáti čtyř symbolů, takže krátký řetězec se často čte stejně v obou.
Otázky, které se objevují

Proč řetězec Base64 někdy končí jedním = a někdy dvěma? Jeden znamená, že poslední skupina nese tři skutečné znaky, tedy dva vstupní bajty; dva znamenají, že nese dva, tedy jeden vstupní bajt. Žádné = znamená, že délka vstupu byla násobkem tří.

Dokáže Base64 zachytit libovolné binární soubory? Ano, a to je jeho hlavní použití. Tato stránka bere vstup jako text UTF-8; specializovaný nástroj Soubor do Base64 čte surové bajty, když chcete zakódovat něco, co není text.

Kterou abecedu použít v API? Tu, kterou dokumentuje přijímající strana. Pokud říká bezpečnou pro URL, použijte ji; pokud neříká nic a hodnota putuje v URL, bezpečná pro URL bez výplně je bezpečná volba.

Rozlišuje výstup velikost písmen? Naprosto. a a A jsou různé hodnoty, proto Base64 přežije přepsaný znak mnohem hůř než Base32 nebo Crockford Base32.