Base64
Author
Albert FloresBase64 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 ('/'). +more 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
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
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. +more 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 | 78 | 78 | 78 | 78 | 78 | 78 | 78 | 97 | 97 | 97 | 97 | 97 | 97 | 97 | 97 | 122 | 122 | 122 | 122 | 122 | 122 | 122 | 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 | 19 | 19 | 19 | 19 | 19 | 38 | 38 | 38 | 38 | 38 | 38 | 5 | 5 | 5 | 5 | 5 | 5 | 58 | 58 | 58 | 58 | 58 | 58 |
base64 kódování | T | T | T | T | T | T | m | m | m | m | m | m | F | F | F | F | F | F | 6 | 6 | 6 | 6 | 6 | 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
Výsledný řetězec se skládá z tisknutelných znaků ASCII. * Rozlišuje se velikost písmen. +more * 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
[url=http://www. toastedspam. +morecom/decode64]Decode Base64 encoded text[/url] * [url=http://www. opinionatedgeek. com/dotnet/tools/Base64Decode/]Base64 Decoder[/url] * [url=https://web. archive. org/web/20090301092859/http://makcoder. sourceforge. net/demo/base64. php]On-line Base64 encoder and decoder[/url] * [url=https://www. base64encode. org]Base64 encode and decode - Online[/url] * [url=http://www. motobit. com/util/base64-decoder-encoder. asp]On-line decoding and encoding text and files[/url] * [url=http://webnet77. com/cgi-bin/helpers/base-64. pl]On-line Base64 encode / decode[/url] * [url=http://www. fourmilab. ch/webtools/base64/]Downloadable open source tool to encode or decode Base64 on Unix or Win32[/url].