base64 encoder/decoder
Ae galera, esse é pros que curtem algoritmos, eu esses dias tava dando uma olhada no base64 e resolvi implementar o algoritmo dele no Javascript, pra usos convencionais ele é totalmente inutil XD, mas quem quizer fazer experimentos, ele é uma boa maneira para transferir dados binarios por ajax, voce pode encodar com base64 pra enviar, e decodificar os dados recebidos a partir do modelo base64 (que é um modelo que usa apenas caracteres simples, dessa forma pode ser perfeitamente usado em um protocolo que suporta transporte de texto plano).
chega de lenga lenga, ta ai o codigo:
Base64 = {
charset: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
charset_urlsafe: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=',
encode: function(data, urlsafe) {
var charset = urlsafe ? Base64.charset_urlsafe : Base64.charset;
var i = 0;
var len = data.length;
var output = '';
var c1, c2, c3;
var e1, e2, e3, e4;
while (i < len) {
c1 = data.charCodeAt(i++);
c2 = data.charCodeAt(i++);
c3 = data.charCodeAt(i++);
e1 = c1 >> 2;
e2 = ((c1 & 0x3) << 4) | (c2 >> 4);
e3 = ((c2 & 0xf) << 2) | (c3 >> 6);
e4 = c3 & 0x3f;
if (isNaN(c2)) {
e3 = e4 = 64;
} else if (isNaN(c3)) {
e4 = 64;
}
output += charset.charAt(e1);
output += charset.charAt(e2);
output += charset.charAt(e3);
output += charset.charAt(e4);
}
return output;
},
decode: function(data, urlsafe) {
var charset = urlsafe ? Base64.charset_urlsafe : Base64.charset;
var i = 0;
var len = data.length;
var output = '';
var e1, e2, e3, e4;
var c1, c2, c3;
while (i < len) {
e1 = charset.indexOf(data.charAt(i++));
e2 = charset.indexOf(data.charAt(i++));
e3 = charset.indexOf(data.charAt(i++));
e4 = charset.indexOf(data.charAt(i++));
c1 = (e1 << 2) | (e2 >> 4);
c2 = ((e2 & 0xf) << 4) | (e3 >> 2);
c3 = ((e3 & 0x3) << 6) | e4;
output += String.fromCharCode(c1);
if (e3 != 64) output += String.fromCharCode(c2);
if (e4 != 64) output += String.fromCharCode(c3);
}
return output;
}
};
para utilizar não tem segredo, é só chamar as funções estaticamente, exemplos:
var decodificado = Base64.decode('CONTEUDO A SER DECODIFICADO COM BASE64');
var codificado = Base64.encode('CONTEUDO A SER CODIFICADO COM BASE64');
var codificadoUrlSafe = Base64.encode('CONTEUDO A SER CODIFICADO COM BASE64', true);
o segundo parâmetro pode ser utilizado como true tanto no encode/decode, e serve para codificar utilizando o padrão URL-Safe, que quer dizer que esses dados podem ser trafegados direto na URL sem problemas.Discussão (1)
Carregando comentários...