Base64
é uma forma usada para codificação dos dados e para transferência na Internet
(codificação MIME para transferência de conteúdo). É bastante usado para
transmitir dados binários por meios de transmissão que lidam apenas com texto.
É
constituído por 64 caracteres ([A-Za-z0-9], "/" e "+") que
deram origem ao seu nome. O caractere "=" é utilizado como um sufixo
especial e a especificação original (RFC 989) definiram 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: hello world
Texto
convertido para Base64: aGVsbG8gd29ybGQK
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
MIME é um dos mais conhecido da Base64. É uma codificação que transforma
binários em texto, ou seja, transforma uma sequência qualquer de bytes numa seqüê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 é:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678
Digamos que se queira "mimeficar" SOL.
Neste caso, procura-se o valor ASCII de cada um dos caracteres, transformam-se
estes valores em valores binários, tomam-se os valores dos bits seis a seis e transformam-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
|
|||||||||||||||||||||||
Na Base64, as letras A-Z são à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 ficam nas
posições de 52 a 61, o valor 20 corresponde à letra U, o valor 52 corresponde a
0, 61 a 9, 12 a M. O correspondente Base64 de SOL é U09M. A codificação MIME é
maior do que o texto original porque, para cada três caracteres originais
obtemos quatro caracteres MIME.
Especificação MIME
As especificações completas deste tipo de Base64
são dadas pelas RFC 1421 e RFC 2045.
Criptografia Utilizando base64 e str_repl
Esse código é ideal para quem precisa de uma
criptografia forte em uma senha, por exemplo, mas com a possibilidade de
decodificá-la, deste que tenha o código reverso. O código abaixo é simples e
pode ser melhorado. Sua única restrição: não substitua nenhum caractere por '+',
pois o reverso para decodificar vai apresentar falhas.
<?php
function encode($dados){
$dados=base64_encode($dados);
$procura=array('A','Z','W','a','S','e','I','x','U','d','m','N','B','G','P','9','t','D','Q','F','M','H','E','X','C','V','z','Y','R','T','b','s','h','J','2');
$substitui=array('/','-','.','@','$','&','|','#','_','(',')','%','?',',','[',']','{','}',';',':','>','<','!','"',"'",'§','£','¢','¬','ª','º','~','^','`','´');
$dados=str_replace($procura,$substitui,$dados);
$dados=str_replace('=','',addslashes($dados));
return $dados;
}
function decode($dados){
$dados=stripslashes($dados);
$substitui=array('A','Z','W','a','S','e','I','x','U','d','m','N','B','G','P','9','t','D','Q','F','M','H','E','X','C','V','z','Y','R','T','b','s','h','J','2');
$procura=array('/','-','.','@','$','&','|','#','_','(',')','%','?',',','[',']','{','}',';',':','>','<','!','"',"'",'§','£','¢','¬','ª','º','~','^','`','´');
$dados=str_replace($procura,$substitui,$dados);
$dados=base64_decode($dados);
$dados=str_replace(' ','',$dados);
return $dados;
}
//Para criptografar utilize encode('DADOS A SEREM CRIPTOGRAFADOS'), EX:
$criptografar='minha_senha';
echo encode($criptografar);
//Para decodificar utilize decode('DADOS CRIPTOGRAFADOS');
$criptografado=encode($criptografar);
echo decode($criptografado);
?>
Conclusão
Baseado
nos estudos de criptografia base64 pode concluir que essa codificação é ideal
para quem precisa de uma criptografia forte em uma senha. Base64 é uma forma
usada para codificação dos dados e para transferência na Internet.
É
utilizado bastante para transmitir dados por meios de transmissão que utilizam apenas
texto, como por exemplo, para enviar arquivos de anexos para correio eletrônico.
É
uma codificação que transforma números binários em texto, base64 transforma uma
sequência qualquer de bytes numa seqüência de caracteres ASCII que podem ser
impressos. E isso quer dizer que o base64 foi projetado para codificar a
transferência de conteúdo de e-mails através da Internet.
Bibliografia
Fonte do
código utilizado:
Tags
Criptografia
Viu algum erro ou gostaria de adicionar uma sugestão para atualizarmos esta matéria?
Colabore com o autor clicando aqui!