Przejdź do zawartości

Base64: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m Wycofano edycję użytkownika 212.87.238.18 (dyskusja). Autor przywróconej wersji to PlayerekG123.
Znacznik: Wycofanie zmian
 
(Nie pokazano 19 wersji utworzonych przez 14 użytkowników)
Linia 1: Linia 1:
[[Plik:Base64-da.png|mały|Diagram sposobu kodowania Base64]]
'''Base64''' – rodzaj [[kodowanie transportowe|kodowania transportowego]], zmodyfikowanego pod kątem zwiększenia przenośności wersja kodowania [[uuencode]]. Kodowanie to zostało zdefiniowane w dokumencie {{odn|ref=nie|RFC 4648}}.
'''Base64''' – rodzaj [[kodowanie transportowe|kodowania transportowego]], zmodyfikowanego pod kątem zwiększenia przenośności kodowania [[uuencode]]. Kodowanie to zostało zdefiniowane w dokumencie {{odn|ref=nie|RFC 4648}}.


== Kodowanie ==
== Kodowanie ==
Base64 służy do kodowania ciągu [[bajt]]ów za 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 8 [[bit]]ó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. Istnieją więc dokładnie 64 możliwe wartości każdej takiej jednostki. Wszystkim tym jednostkomprzypisywane znaki na podstawie arbitralnie ustalonego przypisania (patrz tabela poniżej).
Base64 służy do kodowania ciągu [[bajt]]ów za 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 8 [[bit]]ó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 przypisywaneodpowiednie 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.

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 ilość symboli dopełnienia (pad), aby ten miał długość podzielną przez 4).

Dane zakodowane przy pomocy base64 w urządzeniu, które używa 8-bitowego słowa do reprezentacji znaków powiększają swój rozmiar o 33%.


{|class="wikitable" style="text-align: center; margin: 0 auto;"
{|class="wikitable" style="text-align: center; margin: 0 auto;"
Linia 62: Linia 59:
|}
|}


Ostatnie dwa znaki nie są alfanumeryczne. W niektórych niestandardowych odmianach kodowania base64 mogą zostać zastąpione znakami - i _ (dywiz i podkreślnik). Dzięki temu można umieścić fragment takiego kodu w [[Uniform Resource Locator|URL]], co dla znaków plus i ukośnik jest niemożliwe (plus jest zamieniany na spację, a ukośnik najczęściej oddziela fragmenty ścieżki w URL)
Ostatnie dwa znaki nie są [[Kod alfanumeryczny|alfanumeryczne]]. W niektórych niestandardowych odmianach kodowania base64 mogą one zostać zastąpione znakami <code>-</code> i <code>_</code> ([[dywiz]] i [[Znak podkreślenia|podkreślnik]]). Dzięki temu można umieścić fragment takiego kodu np. w adresie [[Uniform Resource Locator|URL]], co dla znaków <code>+</code> i <code>/</code> jest niemożliwe, gdyż [[Znak plus|plus]] jest zamieniany na spację, a [[ukośnik]] najczęś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. [[Plik binarny|pliki binarne]] umieszczone w [[Poczta elektroniczna|wiadomościach e-mail]] zwiększają swoją objętość o ⅓.


== Przykład ==
== Przykład ==
Linia 69: Linia 68:
Idealy sa jak gwiazdy - nie mozna ich osiagnac, ale mozna sie nimi kierowac.
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):

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
SWRlYWx5IHNhIGphayBnd2lhemR5IC0gbmllIG1vem5hIGljaCBvc2lhZ25hYywgYWxlIG1v
Linia 81: Linia 78:
# pamiętania [[ViewState]] w [[strona internetowa|stronach WWW]] tworzonych przy użyciu [[technologia|technologii]] [[ASP.NET]],
# pamiętania [[ViewState]] w [[strona internetowa|stronach WWW]] tworzonych przy użyciu [[technologia|technologii]] [[ASP.NET]],
# kodowania haseł wysyłanych w [[Protokół komunikacyjny|protokole]] [[Simple Mail Transfer Protocol|SMTP]] podczas [[uwierzytelnianie|uwierzytelniania]] metodami PLAIN i LOGIN.
# kodowania haseł wysyłanych w [[Protokół komunikacyjny|protokole]] [[Simple Mail Transfer Protocol|SMTP]] podczas [[uwierzytelnianie|uwierzytelniania]] metodami PLAIN i LOGIN.
# kodowania obrazów do zagnieżdżania wewnątrz HTML-a wg {{Link-interwiki|Schemat URI data|tekst=schematu URI data:|Q=Q976554}}


== Zobacz też ==
== Zobacz też ==
* [[Base85]]
* [[Multipurpose Internet Mail Extensions|MIME]]
* [[Multipurpose Internet Mail Extensions|MIME]]
* [[uuencode]]
* [[uuencode]]

Aktualna wersja na dzień 10:27, 12 wrz 2024

Diagram sposobu kodowania Base64

Base64 – rodzaj kodowania transportowego, zmodyfikowanego pod kątem zwiększenia przenośności kodowania uuencode. Kodowanie to zostało zdefiniowane w dokumencie RFC 4648 ↓.

Kodowanie

[edytuj | edytuj kod]

Base64 służy do kodowania ciągu bajtów za 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 8 bitó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 _ (dywiz i podkreślnik). Dzięki temu można umieścić fragment takiego kodu np. w adresie URL, co dla znaków + i / jest niemożliwe, gdyż plus jest zamieniany na spację, a ukośnik najczęś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 binarne umieszczone w wiadomościach e-mail zwiększają swoją objętość o ⅓.

Przykład

[edytuj | edytuj kod]

Zdanie (kodowane tutaj w ASCII – stąd brak polskich znakó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

[edytuj | edytuj kod]

Base64 jest wykorzystywane m.in. do:

  1. przesyłania załączników binarnych w poczcie elektronicznej,
  2. pamiętania ViewState w stronach WWW tworzonych przy użyciu technologii ASP.NET,
  3. kodowania haseł wysyłanych w protokole SMTP podczas uwierzytelniania metodami PLAIN i LOGIN.
  4. kodowania obrazów do zagnieżdżania wewnątrz HTML-a wg schematu URI data:(inne języki)

Zobacz też

[edytuj | edytuj kod]

Linki zewnętrzne

[edytuj | edytuj kod]