Base64
Base64– rodzajkodowania transportowego,zmodyfikowanego pod kątem zwiększenia przenośności kodowaniauuencode.Kodowanie to zostało zdefiniowane w dokumencieRFC 4648 ↓.
Kodowanie
edytujBase64 służy do kodowania ciągubajtówza pomocą ciągu znaków. Kodowanie to przypisuje 64 wybranym znakom (patrz tabelka niżej) wartości od 0 do 63. Ciąg bajtów poddawany kodowaniu dzielony jest na grupy po 3 bajty. Ponieważ bajt ma 8bitów,grupa 3 bajtów składa się z 24 bitów. Każdą taką grupę dzieli się następnie na 4 jednostki 6-bitowe, więc istnieją dokładnie 64 możliwe wartości każdej z tych jednostek. Jednostkom przypisywane są odpowiednie znaki na podstawie arbitralnie ustalonego kodowania (patrz tabela poniżej). Jeśli rozmiar wejściowego ciągu bajtów nie jest wielokrotnością liczby 3, to stosowane jest dopełnianie – na końcu wynikowego ciągu dodawana jest taka liczba symboli dopełnienia (ang.pad), aby ten miał długość podzielną przez 4.
Wartość | Znak | Wartość | Znak | Wartość | Znak |
---|---|---|---|---|---|
0 | A | 22 | W | 44 | s |
1 | B | 23 | X | 45 | t |
2 | C | 24 | Y | 46 | u |
3 | D | 25 | Z | 47 | v |
4 | E | 26 | a | 48 | w |
5 | F | 27 | b | 49 | x |
6 | G | 28 | c | 50 | y |
7 | H | 29 | d | 51 | z |
8 | I | 30 | e | 52 | 0 |
9 | J | 31 | f | 53 | 1 |
10 | K | 32 | g | 54 | 2 |
11 | L | 33 | h | 55 | 3 |
12 | M | 34 | i | 56 | 4 |
13 | N | 35 | j | 57 | 5 |
14 | O | 36 | k | 58 | 6 |
15 | P | 37 | l | 59 | 7 |
16 | Q | 38 | m | 60 | 8 |
17 | R | 39 | n | 61 | 9 |
18 | S | 40 | o | 62 | + |
19 | T | 41 | p | 63 | / |
20 | U | 42 | q | ||
21 | V | 43 | r | pad | = |
Ostatnie dwa znaki nie sąalfanumeryczne.W niektórych niestandardowych odmianach kodowania base64 mogą one zostać zastąpione znakami-
i_
(dywizipodkreślnik). Dzięki temu można umieścić fragment takiego kodu np. w adresieURL,co dla znaków+
i/
jest niemożliwe, gdyżplusjest zamieniany na spację, aukośniknajczęściej oddziela fragmenty ścieżki w URL.
W urządzeniu, które używa 8-bitowego słowa do reprezentacji znaków, dane zakodowane przy pomocy base64 powiększają swój rozmiar o 33% – dlatego np.pliki binarneumieszczone wwiadomościach e-mailzwiększają swoją objętość o ⅓.
Przykład
edytujZdanie (kodowane tutaj wASCII– stąd brak polskichznaków diakrytycznych)
Idealy sa jak gwiazdy - nie mozna ich osiagnac, ale mozna sie nimi kierowac.
po zakodowaniu base64 wygląda następująco (znak powrotu karetki „CR” i nowej linii „LF” na końcu zdania również zostały zakodowane na potrzeby tego przykładu):
SWRlYWx5IHNhIGphayBnd2lhemR5IC0gbmllIG1vem5hIGljaCBvc2lhZ25hYywgYWxlIG1v em5hIHNpZSBuaW1pIGtpZXJvd2FjLg0K
Zastosowania
edytujBase64 jest wykorzystywane m.in. do:
- przesyłania załączników binarnych wpoczcie elektronicznej,
- pamiętaniaViewStatewstronach WWWtworzonych przy użyciutechnologiiASP.NET,
- kodowania haseł wysyłanych wprotokoleSMTPpodczasuwierzytelnianiametodami PLAIN i LOGIN.
- kodowania obrazów do zagnieżdżania wewnątrz HTML-a wgschematu URI data:
Zobacz też
edytujLinki zewnętrzne
edytuj- Base64 Decode
- S.Josefsson ,The Base16, Base32, and Base64 Data Encodings,RFC4648,IETF,październik 2006,DOI:10.17487/RFC4648,ISSN2070-1721,OCLC943595667(ang.).