Base64.as

Go to the documentation of this file.
00001 
00011 class gugga.crypt.Base64 {
00012 
00017         private static var base64chars:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
00018 
00022         public static function encode(src:String):String {
00023                 var i:Number = 0;
00024                 var output:String = new String("");
00025                 var chr1:Number, chr2:Number, chr3:Number;
00026                 var enc1:Number, enc2:Number, enc3:Number, enc4:Number;
00027                 while (i < src.length) {
00028                         chr1 = src.charCodeAt(i++);
00029                         chr2 = src.charCodeAt(i++);
00030                         chr3 = src.charCodeAt(i++);
00031                         enc1 = chr1 >> 2;
00032                         enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
00033                         enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
00034                         enc4 = chr3 & 63;
00035                         if(isNaN(chr2)) enc3 = enc4 = 64;
00036                         else if(isNaN(chr3)) enc4 = 64;
00037                         output += base64chars.charAt(enc1)+base64chars.charAt(enc2);
00038                         output += base64chars.charAt(enc3)+base64chars.charAt(enc4);
00039                 }
00040                 return output;
00041         }
00042 
00046         public static function decode(src:String):String {
00047                 var i:Number = 0;
00048                 var output:String = new String("");
00049                 var chr1:Number, chr2:Number, chr3:Number;
00050                 var enc1:Number, enc2:Number, enc3:Number, enc4:Number;
00051                 while (i < src.length) {
00052                         enc1 = base64chars.indexOf(src.charAt(i++));
00053                         enc2 = base64chars.indexOf(src.charAt(i++));
00054                         enc3 = base64chars.indexOf(src.charAt(i++));
00055                         enc4 = base64chars.indexOf(src.charAt(i++));
00056                         chr1 = (enc1 << 2) | (enc2 >> 4);
00057                         chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
00058                         chr3 = ((enc3 & 3) << 6) | enc4;
00059                         output += String.fromCharCode(chr1);
00060                         if (enc3 != 64) output = output+String.fromCharCode(chr2);
00061                         if (enc4 != 64) output = output+String.fromCharCode(chr3);
00062                 }
00063                 return output;
00064         }
00065 
00066 }

Generated on Fri May 11 17:12:42 2007 for GuggaFramework by  doxygen 1.5.2