亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS 實現BASE64_ENCODE和BASE64_DECODE(實例代碼)

2019-11-20 21:43:21
字體:
來源:轉載
供稿:網友

Base64是一種基于64個可打印字符來表示二進制數據的表示方法。由于2的6次方等于64,所以每6個比特為一個單元,對應某個可打印字符。三個字節有24個比特,對應于4個Base64單元,即3個字節需要用4個可打印字符來表示。它可用來作為電子郵件的傳輸編碼。在Base64中的可打印字符包括字母A-Z、a-z、數字0-9 ,這樣共有62個字符,此外兩個可打印符號在不同的系統中而不同(本類庫里面用的是`+`,`/`這兩個字符)。一些如uuencode的其他編碼方法,和之后binhex的版本使用不同的64字符集來代表6個二進制數字,但是它們不叫Base64。
Base64常用于在通常處理文本數據的場合,表示、傳輸、存儲一些二進制數據。包括MIME的email,email via MIME, 在XML中存儲復雜數據。
Base64其實是一種簡單的置換加密方式,但是BASE64的用處往往并不是為了防止信息泄露,而且為了方便傳輸,進過BASE64編碼后的信息會比原始信息長,大概是4/3倍。

實現代碼一、測試可以用

var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);/** * base64編碼 * @param {Object} str */function base64encode(str){    var out, i, len;    var c1, c2, c3;    len = str.length;    i = 0;    out = "";    while (i < len) {        c1 = str.charCodeAt(i++) & 0xff;        if (i == len) {            out += base64EncodeChars.charAt(c1 >> 2);            out += base64EncodeChars.charAt((c1 & 0x3) << 4);            out += "==";            break;        }        c2 = str.charCodeAt(i++);        if (i == len) {            out += base64EncodeChars.charAt(c1 >> 2);            out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));            out += base64EncodeChars.charAt((c2 & 0xF) << 2);            out += "=";            break;        }        c3 = str.charCodeAt(i++);        out += base64EncodeChars.charAt(c1 >> 2);        out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));        out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));        out += base64EncodeChars.charAt(c3 & 0x3F);    }    return out;}/** * base64解碼 * @param {Object} str */function base64decode(str){    var c1, c2, c3, c4;    var i, len, out;    len = str.length;    i = 0;    out = "";    while (i < len) {        /* c1 */        do {            c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];        }        while (i < len && c1 == -1);        if (c1 == -1)             break;        /* c2 */        do {            c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];        }        while (i < len && c2 == -1);        if (c2 == -1)             break;        out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));        /* c3 */        do {            c3 = str.charCodeAt(i++) & 0xff;            if (c3 == 61)                 return out;            c3 = base64DecodeChars[c3];        }        while (i < len && c3 == -1);        if (c3 == -1)             break;        out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));        /* c4 */        do {            c4 = str.charCodeAt(i++) & 0xff;            if (c4 == 61)                 return out;            c4 = base64DecodeChars[c4];        }        while (i < len && c4 == -1);        if (c4 == -1)             break;        out += String.fromCharCode(((c3 & 0x03) << 6) | c4);    }    return out;}/** * utf16轉utf8 * @param {Object} str */function utf16to8(str){    var out, i, len, c;    out = "";    len = str.length;    for (i = 0; i < len; i++) {        c = str.charCodeAt(i);        if ((c >= 0x0001) && (c <= 0x007F)) {            out += str.charAt(i);        }        else             if (c > 0x07FF) {                out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));                out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));                out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));            }            else {                out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));                out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));            }    }    return out;}/** * utf8轉utf16 * @param {Object} str */function utf8to16(str){    var out, i, len, c;    var char2, char3;    out = "";    len = str.length;    i = 0;    while (i < len) {        c = str.charCodeAt(i++);        switch (c >> 4) {            case 0:            case 1:            case 2:            case 3:            case 4:            case 5:            case 6:            case 7:                // 0xxxxxxx                out += str.charAt(i - 1);                break;            case 12:            case 13:                // 110x xxxx 10xx xxxx                char2 = str.charCodeAt(i++);                out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));                break;            case 14:                // 1110 xxxx10xx xxxx10xx xxxx                char2 = str.charCodeAt(i++);                char3 = str.charCodeAt(i++);                out += String.fromCharCode(((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | ((char3 & 0x3F) << 0));                break;        }    }    return out;}//demo//function doit(){//    var f = document.f;//    f.output.value = base64encode(utf16to8(f.source.value));//    f.decode.value = utf8to16(base64decode(f.output.value));//}

功能分割版,就是將兩個js函數分別寫出來

Javascript的base64加密函數和base64解密函數,仿PHP base64_encode()和base64_decode().附實例??梢詫s代碼保存到base64.js中,在需要的時候調用。
注意:base64加密和解密有固有的算,請不要改動以下代碼,否則可能導致程序出錯,或者無法獲取到正確的結果。
為了保證代碼的正確性,請下載附件base64.js (沒有實例),而不要直接復制本頁代碼。

base64加密代碼

    function base64_encode(str){        var c1, c2, c3;        var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";                var i = 0, len= str.length, string = '';        while (i < len){            c1 = str.charCodeAt(i++) & 0xff;            if (i == len){                string += base64EncodeChars.charAt(c1 >> 2);                string += base64EncodeChars.charAt((c1 & 0x3) << 4);                string += "==";                break;            }            c2 = str.charCodeAt(i++);            if (i == len){                string += base64EncodeChars.charAt(c1 >> 2);                string += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));                string += base64EncodeChars.charAt((c2 & 0xF) << 2);                string += "=";                break;            }            c3 = str.charCodeAt(i++);            string += base64EncodeChars.charAt(c1 >> 2);            string += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));            string += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));            string += base64EncodeChars.charAt(c3 & 0x3F)        }            return string    }

base64解密啊代碼

function base64_decode(str){        var c1, c2, c3, c4;        var base64DecodeChars = new Array(            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,            -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57,            58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6,            7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,            25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,            37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1,            -1, -1        );        var i=0, len = str.length, string = '';        while (i < len){            do{                c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]            } while (                i < len && c1 == -1            );            if (c1 == -1) break;            do{                c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]            } while (                i < len && c2 == -1            );            if (c2 == -1) break;            string += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));            do{                c3 = str.charCodeAt(i++) & 0xff;                if (c3 == 61)                    return string;                c3 = base64DecodeChars[c3]            } while (                i < len && c3 == -1            );            if (c3 == -1) break;            string += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));            do{                c4 = str.charCodeAt(i++) & 0xff;                if (c4 == 61) return string;                c4 = base64DecodeChars[c4]            } while (                i < len && c4 == -1            );            if (c4 == -1) break;            string += String.fromCharCode(((c3 & 0x03) << 6) | c4)        }        return string;    }

上面代碼的測試代碼

 document.write(base64_encode('www.49028c.com'));    document.write('<br />');    document.write(base64_decode('aHR0cDovL3d3dy5qYjUxLm5ldA==')); 

實現代碼二:針對utf8

<script language='javascript'>/* utf.js - UTF-8 <=> UTF-16 convertion** Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp>* Version: 1.0* LastModified: Dec 25 1999* This library is free. You can redistribute it and/or modify it.*//** Interfaces:* utf8 = utf16to8(utf16);* utf16 = utf16to8(utf8);*/function utf16to8(str) {  var out, i, len, c;  out = "";  len = str.length;  for(i = 0; i < len; i++) {   c = str.charCodeAt(i);   if ((c >= 0x0001) && (c <= 0x007F)) {    out += str.charAt(i);   } else if (c > 0x07FF) {    out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));    out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));    out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));   } else {    out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));    out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));   }  }  return out;}function utf8to16(str) {  var out, i, len, c;  var char2, char3;  out = "";  len = str.length;  i = 0;  while(i < len) {   c = str.charCodeAt(i++);   switch(c >> 4)   {    case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:    // 0xxxxxxx    out += str.charAt(i-1);    break;   case 12: case 13:    // 110x xxxx 10xx xxxx    char2 = str.charCodeAt(i++);    out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));    break;   case 14:    // 1110 xxxx 10xx xxxx 10xx xxxx    char2 = str.charCodeAt(i++);    char3 = str.charCodeAt(i++);    out += String.fromCharCode(((c & 0x0F) << 12) |           ((char2 & 0x3F) << 6) |           ((char3 & 0x3F) << 0));    break;   }  }  return out;}/* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp>* Version: 1.0* LastModified: Dec 25 1999* This library is free. You can redistribute it and/or modify it.*//** Interfaces:* b64 = base64encode(data);* data = base64decode(b64);*/var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var base64DecodeChars = new Array(  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,  52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,  -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,  15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,  -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,  41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);function base64encode(str) {  var out, i, len;  var c1, c2, c3;  len = str.length;  i = 0;  out = "";  while(i < len) {   c1 = str.charCodeAt(i++) & 0xff;   if(i == len)   {    out += base64EncodeChars.charAt(c1 >> 2);    out += base64EncodeChars.charAt((c1 & 0x3) << 4);    out += "==";    break;   }   c2 = str.charCodeAt(i++);   if(i == len)   {    out += base64EncodeChars.charAt(c1 >> 2);    out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));    out += base64EncodeChars.charAt((c2 & 0xF) << 2);    out += "=";    break;   }   c3 = str.charCodeAt(i++);   out += base64EncodeChars.charAt(c1 >> 2);   out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));   out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));   out += base64EncodeChars.charAt(c3 & 0x3F);  }  return out;}function base64decode(str) {  var c1, c2, c3, c4;  var i, len, out;  len = str.length;  i = 0;  out = "";  while(i < len) {   /* c1 */   do {    c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];   } while(i < len && c1 == -1);   if(c1 == -1)    break;   /* c2 */   do {    c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];   } while(i < len && c2 == -1);   if(c2 == -1)    break;   out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));   /* c3 */   do {    c3 = str.charCodeAt(i++) & 0xff;    if(c3 == 61)     return out;    c3 = base64DecodeChars[c3];   } while(i < len && c3 == -1);   if(c3 == -1)    break;   out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));   /* c4 */   do {    c4 = str.charCodeAt(i++) & 0xff;    if(c4 == 61)     return out;    c4 = base64DecodeChars[c4];   } while(i < len && c4 == -1);   if(c4 == -1)    break;   out += String.fromCharCode(((c3 & 0x03) << 6) | c4);  }  return out;}//input base64 encodefunction strdecode(str){   return utf8to16(base64decode(str));}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区视频免费在线观看| 一本久久综合亚洲鲁鲁| 久久色精品视频| 日韩精品中文在线观看| 欧美性生交xxxxx久久久| 亚洲专区在线视频| 国外色69视频在线观看| 国产成人午夜视频网址| 欧美成人午夜激情视频| 欧美国产日韩一区| 91精品视频一区| 欧美激情视频网| 38少妇精品导航| 在线观看视频99| 午夜精品一区二区三区av| 另类专区欧美制服同性| 国产成人精品一区二区在线| 茄子视频成人在线| 久久九九精品99国产精品| 亚洲激情免费观看| 欧美精品免费播放| 国产欧美一区二区三区久久| 欧美黄色成人网| 国产成人精品视频在线| 92裸体在线视频网站| 日韩成人免费视频| 色婷婷综合久久久久中文字幕1| 欧美多人乱p欧美4p久久| 欧美制服第一页| 欧美激情在线播放| 亚洲综合小说区| 亲爱的老师9免费观看全集电视剧| 欧美大片在线看| 成人黄色免费看| 久久久成人精品视频| 成人有码视频在线播放| 91av在线播放视频| 精品露脸国产偷人在视频| 麻豆国产va免费精品高清在线| 欧美电影免费观看网站| 欧美大片欧美激情性色a∨久久| 欧美极品少妇xxxxⅹ喷水| 亚洲欧美日韩国产中文| 久久中文久久字幕| 精品久久久av| 黑人巨大精品欧美一区二区| 正在播放国产一区| 国产又爽又黄的激情精品视频| 欧美国产日韩一区二区在线观看| 国产日韩专区在线| 精品国产一区二区三区久久| 日韩网站免费观看高清| 日本一本a高清免费不卡| 91豆花精品一区| 亚洲国产私拍精品国模在线观看| 欧美成人精品三级在线观看| 久久精品成人欧美大片古装| 国产综合视频在线观看| 992tv成人免费影院| 亚洲性猛交xxxxwww| 亚洲一区免费网站| 欧美在线视频导航| 成人激情综合网| 亚洲一区亚洲二区亚洲三区| 欧美国产第一页| 国产精品久久婷婷六月丁香| 亚洲第一区中文字幕| 青青a在线精品免费观看| 91视频免费在线| 国产精品日韩精品| 国产精品视频永久免费播放| 久久综合九色九九| 久操成人在线视频| 亚洲欧美日韩另类| 精品国产一区二区三区在线观看| 色多多国产成人永久免费网站| 红桃av永久久久| 亚洲精品久久久久久久久| 欧美日韩国产页| 久久久久久这里只有精品| 亚洲国产天堂久久国产91| 亚洲高清一二三区| 日韩激情视频在线| 91黄色8090| 日韩一区二区在线视频| 国产精品美女久久久久久免费| 性欧美长视频免费观看不卡| 成人免费在线视频网站| 亚洲va久久久噜噜噜久久天堂| 91精品国产综合久久香蕉最新版| 国产精品视频午夜| 日韩免费在线免费观看| 91亚洲精品在线观看| 成人黄色在线播放| 亚洲尤物视频网| 国产成人拍精品视频午夜网站| 26uuu久久噜噜噜噜| 亚洲人a成www在线影院| 欧美精品aaa| 欧美日韩国产专区| 欧美黄色片在线观看| 日韩av在线直播| 九九热在线精品视频| 亚洲国产精久久久久久久| 久久久成人精品| 日韩精品免费在线视频| 亚洲视频精品在线| 97视频在线观看亚洲| 国内伊人久久久久久网站视频| 欧美在线激情视频| 色多多国产成人永久免费网站| 一区二区三区亚洲| 欧美日韩福利电影| 日韩男女性生活视频| 亚洲aⅴ日韩av电影在线观看| 日本高清视频精品| 亚洲欧美日韩第一区| 欧美日韩成人在线视频| 96精品视频在线| 久久国产精品网站| 国产精品国产三级国产aⅴ浪潮| 欧美老女人在线视频| 欧美日韩国产精品专区| 色爱精品视频一区| 国产欧美精品久久久| 日韩精品高清在线| 日韩经典一区二区三区| 亚洲天天在线日亚洲洲精| 麻豆成人在线看| 91干在线观看| 国产色综合天天综合网| 国产精品黄页免费高清在线观看| 精品亚洲国产视频| 一区二区三区美女xx视频| 亚洲精品久久久久中文字幕欢迎你| 成人午夜小视频| 成人国产精品久久久| 国产精品久久久久久搜索| 亚洲影院在线看| 国产精品久久久久福利| 日韩在线免费av| 久久琪琪电影院| 永久555www成人免费| 色yeye香蕉凹凸一区二区av| 亚洲第一精品久久忘忧草社区| 欧亚精品中文字幕| 亚洲最大中文字幕| 亚洲国产另类 国产精品国产免费| 欧美一级bbbbb性bbbb喷潮片| 91黑丝高跟在线| 日韩欧亚中文在线| 97在线精品国自产拍中文| 国产精品久久久av久久久| 欧美在线免费视频| 色爱av美腿丝袜综合粉嫩av| 久久久久免费视频| 色琪琪综合男人的天堂aⅴ视频| 97香蕉超级碰碰久久免费软件| 91亚洲国产成人精品性色| 欧美日韩亚洲精品内裤| 国产精品久久久一区| 26uuu另类亚洲欧美日本一| 国产精品成人v| 国产+人+亚洲|