Base64 *
Qui 24 Ago 2006 16:07 |
- Detalhes
- Categoria: Códigos abertos
- Atualização: Quarta, 15 Abril 2009 12:51
- Autor: vovó Vicki
- Acessos: 20831
Base64 é um sistema numérico posicional cuja base é 64 (da mesma forma que o sistema decimal é um sistema posicional de base 10). É a maior potência de base 2 que pode ser representada usando-se apenas caracteres ASCII. Devido a esta característica, a Base64 é usada, entre outras coisas, como codificação de transferência de e-mails. Todas as variações mais conhecidas pelo nome de Base64 usam caracteres de A a Z, a-z e 0-9 (nesta ordem) para os primeiros 62 dígitos, mas os símbolos usados para os dois últimos variam consideravelmente de acordo com o sistema. Vários outros métodos de codificação, como o UUEncode e as versões mais atuais do BinHex, usam um conjunto diferente de 64 caracteres para representar 6 dígitos binários - só que estes métodos nunca são chamados de Base64.
O formato MIME
O formato MIME talvez seja o mais conhecido dos Base64. É um esquema de codificação que transforma binários em texto, ou seja, transforma uma sequência qualquer de bytes numa sequência de caracteres ASCII que podem ser impressos. O MIME foi projetado para codificar a transferência de conteúdo de e-mails através da Internet. Os únicos caracteres utilizados são os do alfabeto latino maiúsculo e minúsculo (A-Z e a-z), os numerais (0-9) e os símbolos + e /. Além disso, o símbolo = é um sufixo especial.
Como transformar binários em MIME
A sequência MIME é:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
Digamos que se queira "mimeficar" SOL. Neste caso, procura-se o valor ASCII de cada um dos caracteres, transforma-se estes valores em valores binários, toma-se os valores dos bits seis a seis e transforma-se estes valores novamente em valores ASCII. Acompanhe na tabela abaixo:
Conteúdo | S | O | L | |||||||||||||||||||||
ASCII (bytes) | 83 | 79 | 76 | |||||||||||||||||||||
Binário | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
Índice | 20 | 52 | 61 | 12 | ||||||||||||||||||||
Código Base64 | U | 0 | 9 | M |
Sabendo que, na Base64, as letras A-Z correspondem às posições de 0 a 25, as letras a-z ficam nas posições 26 a 51 e que os dígitos 0-9 ocupam as posições de 52 a 61, fica fácil deduzir que o valor 20 corresponde à letra U, o valor 52 corresponde a zero e assim por diante. Neste caso, o correspondente Base64 de SOL é U09M. Também fica fácil perceber que a codificação MIME é maior do que o texto original porque, para cada três caracteres originais obtemos quatro caracteres MIME.
Neste exemplo existem exatos 3 bytes. Nos casos em que o texto original é composto por um número de bytes que não seja múltiplo de 3, usa-se a seguinte regra:
número de bytes / 3 dá resto 2 -> adiciona-se o sinal = no final número de bytes / 3 dá resto 1 -> adiciona-se dois sinais == no final
Especificações MIME
As especificações completas deste tipo de Base64 são dadas pelas RFC 1421 e RFC 2045.