最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript實現(xiàn)base64的加密解密方法示例

 更新時間:2022年08月06日 16:04:18   作者:夜之寐  
下文是base64用javascript寫出來的函數(shù)和方法。非常不錯,具有參考借鑒價值,需要的的朋友參考下吧

這幾天使用PHP向前端傳值的時候,遇到一個問題,要將代碼傳過去賦值。如果使用urlencode()和urldecode()函數(shù),就會出現(xiàn)js無法解碼的情況,因為php和js的相關函數(shù)算法不一致。于是準備使用通用的base64加密解密。

最近剛發(fā)現(xiàn)的一個比較簡單的代碼支持utf8,可以直接拿來使用。

base64加解密代碼一

function bs64DeCode(str) {
    _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function _utf8_decode(e) {
        var t = "";
        var n = 0;
        var r = c1 = c2 = 0;
        while (n < e.length) {
            r = e.charCodeAt(n);
            if (r < 128) {
                t += String.fromCharCode(r);
                n++
            } else if (r > 191 && r < 224) {
                c2 = e.charCodeAt(n + 1);
                t += String.fromCharCode((r & 31) << 6 | c2 & 63);
                n += 2
            } else {
                c2 = e.charCodeAt(n + 1);
                c3 = e.charCodeAt(n + 2);
                t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
                n += 3
            }
        }
        return t
    }
    function decode(input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (i < input.length) {
            enc1 = _keyStr.indexOf(input.charAt(i++));
            enc2 = _keyStr.indexOf(input.charAt(i++));
            enc3 = _keyStr.indexOf(input.charAt(i++));
            enc4 = _keyStr.indexOf(input.charAt(i++));
            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;
            output = output + String.fromCharCode(chr1);
            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }
        }
        output = _utf8_decode(output);
        return output;
    }
    return decode(str);
}

// 字符串轉base64
function b64EncodeUnicode(str) {
    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {
        return String.fromCharCode('0x' + p1);
    }));
}

base64 加密解密二

下方是base64用javascript寫出來的函數(shù)和方法。

//1.加密解密方法使用:
//1.加密 
var str = '124中文內(nèi)容'; 
var base = new Base64(); 
var result = base.encode(str); 
//document.write(result); 
//2.解密 
var result2 = base.decode(result); 
document.write(result2); 
//2.加密、解密算法封裝:
function Base64() { 
  // private property 
  _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 
  // public method for encoding 
  this.encode = function (input) { 
    var output = ""; 
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4; 
    var i = 0; 
    input = _utf8_encode(input); 
    while (i < input.length) { 
      chr1 = input.charCodeAt(i++); 
      chr2 = input.charCodeAt(i++); 
      chr3 = input.charCodeAt(i++); 
      enc1 = chr1 >> 2; 
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); 
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); 
      enc4 = chr3 & 63; 
      if (isNaN(chr2)) { 
        enc3 = enc4 = 64; 
      } else if (isNaN(chr3)) { 
        enc4 = 64; 
      } 
      output = output + 
      _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + 
      _keyStr.charAt(enc3) + _keyStr.charAt(enc4); 
    } 
    return output; 
  } 
  // public method for decoding 
  this.decode = function (input) { 
    var output = ""; 
    var chr1, chr2, chr3; 
    var enc1, enc2, enc3, enc4; 
    var i = 0; 
    input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); 
    while (i < input.length) { 
      enc1 = _keyStr.indexOf(input.charAt(i++)); 
      enc2 = _keyStr.indexOf(input.charAt(i++)); 
      enc3 = _keyStr.indexOf(input.charAt(i++)); 
      enc4 = _keyStr.indexOf(input.charAt(i++)); 
      chr1 = (enc1 << 2) | (enc2 >> 4); 
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); 
      chr3 = ((enc3 & 3) << 6) | enc4; 
      output = output + String.fromCharCode(chr1); 
      if (enc3 != 64) { 
        output = output + String.fromCharCode(chr2); 
      } 
      if (enc4 != 64) { 
        output = output + String.fromCharCode(chr3); 
      } 
    } 
    output = _utf8_decode(output); 
    return output; 
  } 
  // private method for UTF-8 encoding 
  _utf8_encode = function (string) { 
    string = string.replace(/\r\n/g,"\n"); 
    var utftext = ""; 
    for (var n = 0; n < string.length; n++) { 
      var c = string.charCodeAt(n); 
      if (c < 128) { 
        utftext += String.fromCharCode(c); 
      } else if((c > 127) && (c < 2048)) { 
        utftext += String.fromCharCode((c >> 6) | 192); 
        utftext += String.fromCharCode((c & 63) | 128); 
      } else { 
        utftext += String.fromCharCode((c >> 12) | 224); 
        utftext += String.fromCharCode(((c >> 6) & 63) | 128); 
        utftext += String.fromCharCode((c & 63) | 128); 
      } 
    } 
    return utftext; 
  } 
  // private method for UTF-8 decoding 
  _utf8_decode = function (utftext) { 
    var string = ""; 
    var i = 0; 
    var c = c1 = c2 = 0; 
    while ( i < utftext.length ) { 
      c = utftext.charCodeAt(i); 
      if (c < 128) { 
        string += String.fromCharCode(c); 
        i++; 
      } else if((c > 191) && (c < 224)) { 
        c2 = utftext.charCodeAt(i+1); 
        string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); 
        i += 2; 
      } else { 
        c2 = utftext.charCodeAt(i+1); 
        c3 = utftext.charCodeAt(i+2); 
        string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); 
        i += 3; 
      } 
    } 
    return string; 
  } 
}

以上所述是小編給大家介紹的Javascript實現(xiàn)base64的加密解密方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • javascript字符串拼接的效率問題

    javascript字符串拼接的效率問題

    不是效率的問題 是 內(nèi)存碎片的問題 用數(shù)組速度比“+”要慢 只是內(nèi)存占的少和內(nèi)存碎片少一些,現(xiàn)在根本不推薦用數(shù)組來處理了。
    2010-12-12
  • javascript 連連看代碼出爐

    javascript 連連看代碼出爐

    非常不錯的連連看實現(xiàn)代碼,大家可以運行下,看下效果。
    2009-06-06
  • JavaScript中的數(shù)學運算介紹

    JavaScript中的數(shù)學運算介紹

    這篇文章主要介紹了JavaScript中的數(shù)學運算介紹,本文先是講解了數(shù)學運算的一些知識,然后給出了操作實例,需要的朋友可以參考下
    2014-12-12
  • Java?Script網(wǎng)頁設計案例詳解

    Java?Script網(wǎng)頁設計案例詳解

    下面我將提供一個簡單的JavaScript網(wǎng)頁設計案例,該案例將實現(xiàn)一個動態(tài)的待辦事項列表(Todo List),用戶可以在頁面上添加新的待辦事項,標記它們?yōu)橐淹瓿?以及刪除它們,這篇文章主要介紹了Java?Script網(wǎng)頁設計案例,需要的朋友可以參考下
    2024-08-08
  • 如何基于uni-app實現(xiàn)微信小程序一鍵登錄與退出登錄功能

    如何基于uni-app實現(xiàn)微信小程序一鍵登錄與退出登錄功能

    uni-app 是使用vue的語法+小程序的標簽和API的一套框架,是一套代碼多端使用,目前是大前端的一種趨勢,下面這篇文章主要給大家介紹了關于如何基于uni-app實現(xiàn)微信小程序一鍵登錄與退出登錄功能的相關資料,需要的朋友可以參考下
    2022-09-09
  • 怎么使用js計算當前一周的日期

    怎么使用js計算當前一周的日期

    這篇文章主要給大家介紹了關于怎么使用js計算當前一周的日期的相關資料,我們可以使用JavaScript的Date對象來獲取近一周的日期,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2023-09-09
  • 常用的Javascript設計模式小結

    常用的Javascript設計模式小結

    javascript設計模式有很多種,本文給大家介紹常用的javascript設計模式,對javascript設計模式相關知識感興趣的朋友一起學習吧
    2015-12-12
  • 異步動態(tài)加載JS并運行(示例代碼)

    異步動態(tài)加載JS并運行(示例代碼)

    這篇文章主要是對異步動態(tài)加載JS并運行的示例代碼進行了介紹。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • Openlayers學習之地圖比例尺控件

    Openlayers學習之地圖比例尺控件

    這篇文章主要為大家詳細介紹了Openlayers學習之地圖比例尺控件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 原生js實現(xiàn)瀑布流布局

    原生js實現(xiàn)瀑布流布局

    這篇文章主要為大家詳細介紹了原生js實現(xiàn)瀑布流布局的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論

汾阳市| 临湘市| 嘉定区| 福鼎市| 平乡县| 东丽区| 德清县| 酒泉市| 通海县| 牙克石市| 红原县| 西充县| 万荣县| 隆子县| 安庆市| 衡南县| 阿拉善左旗| 平乡县| 怀来县| 济源市| 江津市| 罗田县| 贞丰县| 威海市| 象州县| 哈巴河县| 金堂县| 金华市| 黎城县| 定州市| 永昌县| 全椒县| 榆林市| 延吉市| 稷山县| 玉林市| 蓬莱市| 加查县| 新余市| 东乌珠穆沁旗| 民权县|