/ Published in: JavaScript
Take 1
Expand |
Embed | Plain Text
var Base64 = function() { var _key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var _keyRe = new RegExp("[^" + _key + "=]", "g"); return { encode: function(input) { var output = ""; var len = input.length, i = 0, padding = 3 - (len % 3); while (i < len) { var byte1 = input.charCodeAt(i++); var byte2 = input.charCodeAt(i++) || 0; var byte3 = input.charCodeAt(i++) || 0; var index1 = byte1 >> 2; var index2 = (byte1 & 3) << 4 | byte2 >> 4; var index3 = (byte2 & 15) << 2 | byte3 >> 6; var index4 = byte3 & 63; output += _key.charAt(index1) + _key.charAt(index2) + _key.charAt(index3) + _key.charAt(index4); } if (padding) output = output.slice(0, output.length - padding) + (padding == 1 ? "=" : "=="); return output; }, decode: function(input) { input = input.replace(_keyRe, ""); var output = ""; var i = 0, len = input.length, padding = len - input.indexOf("="); while (i < len) { var byte1 = _key.indexOf(input.substr(i++, 1)); var byte2 = _key.indexOf(input.substr(i++, 1)); var byte3 = _key.indexOf(input.substr(i++, 1)); var byte4 = _key.indexOf(input.substr(i++, 1)); var char1 = byte1 << 2 | byte2 >> 4; var char2 = ((byte2 & 15) << 4) | (byte3 >> 2); var char3 = ((byte3 & 3) << 6) | byte4 & 63; output += String.fromCharCode(char1) + String.fromCharCode(char2) + String.fromCharCode(char3); } if (padding) output = output.substr(0, output.length - padding); return output; } }; } ();
You need to login to post a comment.
