Base64

Z Wikipedie, otevřené encyklopedie
Jump to navigation Jump to search

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 | editovat zdroj]

Odstavec z knihy Leviathan (Thomas Hobbes):

Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.

je v MIME Base64 zakódován takto:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

Algoritmus base64[editovat | editovat zdroj]

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

M, a, n jsou zapsány v ASCII jako čísla 77, 97, 110 dekadicky, tedy ve dvojkové soustavě 01001101, 01100001, 01101110. Tyto 3 bajty jsou spojeny do 24 bitů 010011010110000101101110. 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.

Text content M a n
ASCII 77 97 110
Bit pattern 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
Index 19 22 5 46
Base64-Encoded T W F u

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 (dva) znak a přidají se dvě (jedno) rovnítka. Base64 se však používá v převážné míře k zakódování binárních dat, například multimédií.

Vlastnosti base64[editovat | editovat zdroj]

  • 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 obyčejně navýší o 33 %.

Nástroje On-line[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]