Base64

Origem: Wikipedia, a enciclopedia livre.
Diagrama de codificacao Base64

Base64 e um metodo para codificacao de dados para transferencia na Internet ( codificacao MIME para transferencia de conteudo ). E utilizado frequentemente para transmitir dados binarios por meios de transmissao que lidam apenas com texto, como por exemplo para enviar arquivos anexos por e-mail .

E constituido por 64 caracteres ([A-Z],[a-z],[0-9], "/" e "+") que deram origem ao seu nome. O caracter "=" e utilizado como um sufixo especial e a especificacao original ( RFC 989 ) definiu que o simbolo "*" pode ser utilizado para delimitar dados convertidos, mas nao criptografados, dentro de um stream .

Exemplo de codificacao:

  • Texto original: Ola, mundo!
  • Texto convertido para Base64: T2zDoSwgbXVuZG8h

A codificacao Base64 e frequentemente utilizada quando existe uma necessidade de transferencia e armazenamento de dados binarios para um dispositivo designado para trabalhar com dados textuais. Esta codificacao e amplamente utilizada por aplicacoes em conjunto com a linguagem de marcacao XML, possibilitando o armazenamento de dados binarios em forma de texto.

Exemplo [ editar | editar codigo-fonte ]

Um fragmento de Leviathan , de Thomas Hobbes , (note a existencia de espacos 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 representacao em caracteres ASCII codificados no formato Base64 MIME :

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

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

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

Como ilustrado neste exemplo, tres octetos sao representados em Base64 como quatro caracteres.

A tabela de equivalencia entre valores correspondentes (index) e os caracteres utilizados para codificacao :

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

Quando o numero de bytes a ser convertido nao for divisivel por tres (se houver somente um ou dois bytes para compor o ultimo bloco de 24 bits), o seguinte algoritmo e aplicado:

Adiciona-se o numero necessario de bytes com valor zero para que haja 3 bytes. Assim, o bloco fica completo e a conversao e feita normalmente. Se houver somente um byte de entrada significativo, somente os dois primeiros digitos codificados em base64 (12 bits) sao mantidos, e se houverem dois bytes, os tres primeiros digitos codificados (18 bits) sao mantidos. O caractere '=' pode ser adicionado para que o ultimo bloco codificado possua 4 caracteres. Assim, quando o ultimo grupo contiver um octeto, os 4 bits menos significativos do grupo final de 6 bits sao zero; e quando o ultimo grupo contiver dois octetos, os dois bits menos significativos do grupo de 6 bits sao zero.

Ver tambem [ editar | editar codigo-fonte ]

Ícone de esboço Este artigo sobre informatica e um esboco . Voce pode ajudar a Wikipedia expandindo-o .