| Esta pagina ou secao foi marcada para revisao devido a incoerencias ou dados de confiabilidade duvidosa.
Se tem algum conhecimento sobre o tema, por favor, verifique e
melhore
a coerencia e o rigor deste artigo.
Considere colocar uma explicacao mais detalhada na
discussao
.
|
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.
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.
|
---|
Formatos de leitura
| |
---|
Formatos codificados
| |
---|