Base64 je kódování, které převádí binární data na posloupnosti tisknutelných znaků. Umožňuje přenos binárních dat kanály, které dovolují pouze přenos textů. Používá se například v rozšíření MIME pro přenos e-mailů původně 7bitovým poštovním systémem v Internetu. Je definováno v RFC 4648.

Base64 kóduje vždy tři oktety binárních dat pomocí čtyř ASCII znaků. Ke kódování používá 64prvkovou sadu znaků tvořenou velkými i malými písmeny anglické abecedy, číslicemi a znaky plus ('+') a lomítko ('/'). Pokud počet oktetů původních dat není dělitelný třemi, doplňuje na konec zakódovaného textu jedno nebo dvě rovnítka ('=').

Příklad editovat

Například následující text:

Nazdar, světe! Příliš žluťoučký kůň úpěl ďábelské ódy.

je (při reprezentaci v UTF-8) v MIME Base64 zakódován takto:

TmF6ZGFyLCBzdsSbdGUhIFDFmcOtbGnFoSDFvmx1xaVvdcSNa8O9IGvFr8WIIMO6cMSbbCDEj8Oh
YmVsc2vDqSDDs2R5Lg==

Base64 se však používá v převážné míře k zakódování binárních dat, například multimédií.

Algoritmus base64 editovat

Z výše uvedeného příkladu je řetězec Naz zakódován do řetězce TmF6.

N, a, z jsou zapsány v ASCII jako čísla 78, 97, 122 dekadicky, tedy ve dvojkové soustavě 01001110, 01100001, 01111010. Tyto 3 bajty jsou spojeny do 24 bitů 010011100110000101111010. Následně jsou rozděleny do skupin po 6 bitech (6 bitů reprezentuje 64 možných stavů) a převedeny do 4 čísel (24 = 6×4). Tato čísla jsou použita jako index do tabulky znaků:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

kde znaku "A" odpovídá index 0 a znaku "/" index 63.

znaky textu N a z
ASCII hodnota 78 97 122
bity 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 1 1 1 0 1 0
index 19 38 5 58
base64 kódování T m F 6

Jak je uvedeno v daném příkladu s textovými daty, kódování base64 převede každé 3 původní bajty (v našem případě 3 znaky ASCII) na 4 kódované znaky ASCII. Pokud počet nevychází přesně na trojice, zakóduje se poslední jeden nebo dva znaky a přidají se dvě, respektive jedno rovnítko.

Vlastnosti base64 editovat

  • Výsledný řetězec se skládá z tisknutelných znaků ASCII.
  • Rozlišuje se velikost písmen.
  • Nemá kontrolní mechanismus.
  • Kódování probíhá binárně (neřeší se znakové kódování apod.).
  • Base64 je binárně bezpečné.
  • Délka výsledného řetězce se navýší o 33 %.

Nástroje On-line editovat