Source code of Base64_encode, Base64_decode Javascript function.
1 /****************************************************************************
2 Javascript Base64 encoder and decoder
3
4 4 Oct. 2008 Samurai-Logic.com
5 ****************************************************************************/
6
7 var chrs="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //grobal variable
8
9 function Base64_encode(str2){
10
11 chrs+=chrs.toLowerCase()+"0123456789+/";
12
13 str2=str2.replace(/\n/g,"");
14
15 str=[];
16 var out="";
17 var j=str2.length;
18 var z=0;
19 /*---------------------------------------------------------
20 In case char is more than 2 bite
21 ----------------------------------------------------------*/
22 for (var i=0; z<j;i++) {
23 var x=str2.charCodeAt(z);
24
25 if(x<128) str[i]=str2.charCodeAt(z); // 1 Bite(0x00-0x7f)
26
27 else if(x<2048) { // 2 Bites(0x80-0x7ff)
28 str[i++] = ((192) | (x >> 6));
29 str[i] = ((128) | (x & 63));
30
31 }else if (x < 65536){ // 3 Bites(0x800-0xffff)=2sup16
32 str[i++] = ((224) | ( x >> 12 ));
33 str[i++] = ((128) | ((x >> 6 ) & 63)); //3f=63
34 str[i] = ((128) | ( x & 63));
35
36 }else{ // 4 Bites return;
37 out=("4 Bites character is not suported"); return; //will never happen here
38 }
39 z++;
40 }
41
42 /*------------------------------------------------------
43 Base64 encode
44 -------------------------------------------------------*/
45
46 var temp=str.length;
47
48 for (var i = 0; i < temp; i += 3){
49
50 var len = ((temp-i)>=3)? 3 : temp-i;
51
52 out += chrs.charAt((str[i] >> 2))
53
54 if (len == 1){ //1 bite
55 out += chrs.charAt((str[i] & 3) << 4) + "==";
56
57 } else if (len == 2) { //2 bites
58 out += chrs.charAt(((str[i] & 3) << 4) | (str[i+1] >> 4))
59 + chrs.charAt ((str[i+1] & 15) << 2) + "=";
60
61 } else { //3 bites
62 out += chrs.charAt(((str[i] & 3) << 4) | (str[i+1] >> 4))
63 + chrs.charAt(((str[i+1] & 15) << 2) | (str[i+2] >> 6))
64 + chrs.charAt ((str[i+2] & 63)); /* NOTE:63=0x3f, 15=0xf . */
65 }
66 }
67 return out;
68 }
69