Base64 *

Qui

24

Ago

2006


16:07

  • Imprimir
(23 votos, média 4.70 de 5) 


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.

Confira o código

Digite o texto claro:

O texto claro em codificação utf-8 como valores decimais

tempo necessário para texto claro => utf8  

O texto codificado em UTF-8 transformado em Base64

tempo necessário para utf-8 => b64  

representação decimal do utf-8

tempo necessário para b64 => utf-8  

O texto claro depois da conversão

tempo necessário para utf-8 => texto claro  



tempo necessário para a conversão completa  
Javascript UTF-8 Decoder and Encoder - base64 Encoder and Decoder de Tobias Kieslich.
Логофет Вадим Геннадьевичдешевая посудаооо полигон харьковчехлыгде разместить объявлениекупить строительные материалы уфедепутат лобановский