Base64

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

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ů. Base64 se používá například v rozšíření MIME pro přenos e-mailů původně 7bitovým poštovním systémem v Internetu.

Base64 kóduje vždy 3 oktety binárních dat pomocí 4 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 ('='). Je definováno v RFC 4648[1].

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 byte 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, 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]