Base64

Base64 é um método para codificação de dados para transferência na Internet (codificação MIME para transferência de conteúdo). É utilizado frequentemente para transmitir dados binários por meios de transmissão que lidam apenas com texto, como por exemplo para enviar arquivos anexos por e-mail.

Diagrama de codificação Base64

É constituído por 64 caracteres ([A-Z],[a-z],[0-9], "/" e "+") que deram origem ao seu nome. O carácter "=" é utilizado como um sufixo especial e a especificação original (RFC 989) definiu que o símbolo "*" pode ser utilizado para delimitar dados convertidos, mas não criptografados, dentro de um stream.

Exemplo de codificação:

  • Texto original: Olá, mundo!
  • Texto convertido para Base64: T2zDoSwgbXVuZG8h

A codificação Base64 é frequentemente utilizada quando existe uma necessidade de transferência e armazenamento de dados binários para um dispositivo designado para trabalhar com dados textuais. Esta codificação é amplamente utilizada por aplicações em conjunto com a linguagem de marcação XML, possibilitando o armazenamento de dados binários em forma de texto.

Exemplo

Um fragmento de Leviathan, de Thomas Hobbes, (note a existência de espaços entre as palavras):

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.

Sua representação em caracteres ASCII codificados no formato Base64 MIME:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

No fragmento acima, o equivalente em Base64 de Man é TWFu. Codificados em ASCII, os caracteres M, a, e n são armazenados como bytes com valores 77, 97, e 110, cujos valores binários são 01001101, 01100001, e 01101110. Estes 3 valores são concatenados formando um valor de 24 bits, produzindo 010011010110000101101110. Grupos de 6 bits (6 bits formam um máximo de 26 = 64 valores binários diferentes) são separados da esquerda para a direita (neste caso, há 4 conjuntos nos 24 bits) e convertidos em seus valores correspondentes em Base64.

Texto M a n
ASCII 77 (0x4d) 97 (0x61) 110 (0x6e)
Binário 010011010110000101101110
Valor correspondente (index) 19 22 5 46
Codificado em base64 T W F u

Como ilustrado neste exemplo, três octetos são representados em Base64 como quatro caracteres.

A tabela de equivalência entre valores correspondentes (index) e os caracteres utilizados para codificação:

ValorCaractere
0A
1B
2C
3D
4E
5F
6G
7H
8I
9J
10K
11L
12M
13N
14O
15P
ValorCaractere
16Q
17R
18S
19T
20U
21V
22W
23X
24Y
25Z
26a
27b
28c
29d
30e
31f
ValorCaractere
32g
33h
34i
35j
36k
37l
38m
39n
40o
41p
42q
43r
44s
45t
46u
47v
ValorCaractere
48w
49x
50y
51z
520
531
542
553
564
575
586
597
608
619
62+
63/

Quando o número de bytes a ser convertido não for divisível por três (se houver somente um ou dois bytes para compor o último bloco de 24 bits), o seguinte algoritmo é aplicado:

Adiciona-se o número necessário de bytes com valor zero para que haja 3 bytes. Assim, o bloco fica completo e a conversão é feita normalmente. Se houver somente um byte de entrada significativo, somente os dois primeiros dígitos codificados em base64 (12 bits) são mantidos, e se houverem dois bytes, os três primeiros dígitos codificados (18 bits) são mantidos. O caractere '=' pode ser adicionado para que o último bloco codificado possua 4 caracteres. Assim, quando o último grupo contiver um octeto, os 4 bits menos significativos do grupo final de 6 bits são zero; e quando o último grupo contiver dois octetos, os dois bits menos significativos do grupo de 6 bits são zero.

Ver também

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.