miniaturadaimagem|Diagrama de codificação 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.

É 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ário010011010110000101101110Valor correspondente (index) 19 22 5 46Codificado 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 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

ValorCaractere 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

ValorCaractere 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

ValorCaractere 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 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 UUCP

Categoria:Ciência da computação Categoria:Correio eletrônico Categoria:Normas da Internet Categoria:Formatos de serialização de dados Categoria:Tecnologia da informação