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

Vue?路由傳參加密的示例代碼

 更新時(shí)間:2022年12月12日 17:11:22   作者:左手倒影ZY  
這篇文章主要介紹了Vue?路由傳參加密,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Vue 路由傳參加密

首先,創(chuàng)建一個(gè)base64.js

const Base64 = {
   //加密
    encode(str) {
        return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
            function toSolidBytes(match, p1) {
                return String.fromCharCode('0x' + p1);
            }));
    },
  //解密
    decode(str) {
        // Going backwards: from bytestream, to percent-encoding, to original string.
        return decodeURIComponent(atob(str).split('').map(function (c) {
            return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
        }).join(''));
    }
}
export default Base64

在main.js里面引用

import Base64 from './assets/js/base64.js' 

Vue.prototype.$Base64 = Base64;

使用頁(yè)面:

this.$router.push({
  path: "/user/Recommend",
  query:{
    info:this.$Base64.encode(XXXXX)//this.$Base64.encode(JSON.stringify(row))
  }
});

接受參數(shù)頁(yè)面:

let params = JSON.parse(this.$Base64.decode(this.$route.query.info))

Vue項(xiàng)目:路由跳轉(zhuǎn)時(shí)中文傳參被URL編碼,怎么解決?用js封裝Base64編碼解碼加密解密

1.在utils中封裝js方法,代碼如下:

var Base64 = {
?
    // private property
    _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", //密鑰(不能修改)
    
    // public method for encoding
    encode: function(input) {
    var output = "";
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
    var i = 0;
    
    input = Base64._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 + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
    
    }
    
    return output;
    },
    
    // public method for decoding
    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 = this._keyStr.indexOf(input.charAt(i++));
    enc2 = this._keyStr.indexOf(input.charAt(i++));
    enc3 = this._keyStr.indexOf(input.charAt(i++));
    enc4 = this._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 = Base64._utf8_decode(output);
    
    return output;
    
    },
    
    // private method for UTF-8 encoding
    _utf8_encode: function(string) {
    string = string.replace(/ /g, " ");
    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,c3 = 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;
    }
    
    }
?
    export default Base64

2.在main.js中引入并掛載到vue原型對(duì)象上

//Base64加密
import Base64 from '@/utils/base64.js'
Vue.prototype.$Base64 = Base64

3.在vue文件中使用

this.$Base64.encode(str) //加密
this.$Base64.decode(str) //解密

拓展:編碼解碼的其他方式

1.md5

常用于加密,可以暴力反向破解但是難度很大,一般來(lái)說,對(duì)md5加密的要求是現(xiàn)代算力最高的計(jì)算機(jī)需要花百年才能進(jìn)行解密

2.window對(duì)象自帶的編碼解碼

window.btoa(str) //對(duì)str進(jìn)行編碼

binary to ascii,用于將ascii字符串二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成一個(gè)base64編碼過的字符串表示,即Base64的編碼過程,常用于編碼字符串。btoa不能編輯Unicode字符

window.atob(str) //對(duì)str進(jìn)行解碼

ascii to binary,用于解碼一個(gè)已經(jīng)被base-64編碼過的數(shù)據(jù),即解碼Base64編碼的字符串。

3.Unicode字符編碼

encodeURI(str) //將URL地址編碼轉(zhuǎn)變成ASCII字符序列
decodeURI(str) //將ASCII字符序列解碼轉(zhuǎn)變成UTL地址
encodeURIComponent(str) //將中文字符編碼轉(zhuǎn)變成ASCII字符序列
decodeURIComponent(str) //將ASCII字符序列解碼轉(zhuǎn)變成中文字符

4.使用JS函數(shù)的escape()和unescape()

var escape1 =escape("我的名字是:");//編碼
      console.log(escape1);
      var unescape1 = unescape(escape1); //解碼
      console.log(unescape1);

到此這篇關(guān)于Vue 路由傳參加密的文章就介紹到這了,更多相關(guān)Vue 路由傳參加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Element input樹型下拉框的實(shí)現(xiàn)代碼

    Element input樹型下拉框的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Element input樹型下拉框的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-12-12
  • vue2.0數(shù)據(jù)雙向綁定與表單bootstrap+vue組件

    vue2.0數(shù)據(jù)雙向綁定與表單bootstrap+vue組件

    這篇文章主要介紹了vue2.0數(shù)據(jù)雙向綁定與表單bootstrap+vue組件,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • vue關(guān)于點(diǎn)擊詳情頁(yè)面keep-alive的緩存問題

    vue關(guān)于點(diǎn)擊詳情頁(yè)面keep-alive的緩存問題

    這篇文章主要介紹了vue關(guān)于點(diǎn)擊詳情頁(yè)面keep-alive的緩存問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue3中配置404路由及懶加載的解決過程

    Vue3中配置404路由及懶加載的解決過程

    這篇文章主要介紹了Vue3中配置404路由及懶加載的解決過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Vue實(shí)現(xiàn)上下層疊輪播圖

    Vue實(shí)現(xiàn)上下層疊輪播圖

    這篇文章主要介紹了Vue實(shí)現(xiàn)上下層疊輪播圖,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • el-select 數(shù)據(jù)回顯,只顯示value不顯示lable問題

    el-select 數(shù)據(jù)回顯,只顯示value不顯示lable問題

    這篇文章主要介紹了el-select 數(shù)據(jù)回顯,只顯示value不顯示lable問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue路由緩存的幾種實(shí)現(xiàn)方式小結(jié)

    vue路由緩存的幾種實(shí)現(xiàn)方式小結(jié)

    這篇文章主要介紹了vue路由緩存的幾種實(shí)現(xiàn)方式,結(jié)合實(shí)例形式詳細(xì)分析了vue.js路由緩存常見實(shí)現(xiàn)方式、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • vue實(shí)現(xiàn)書籍購(gòu)物車功能

    vue實(shí)現(xiàn)書籍購(gòu)物車功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)書籍購(gòu)物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Vue命令式組件的編寫與應(yīng)用小結(jié)

    Vue命令式組件的編寫與應(yīng)用小結(jié)

    這篇文章主要介紹了Vue命令式組件的編寫與應(yīng)用小結(jié),在這篇文章中,我會(huì)帶你了解命令式組件的基本概念,并通過一些簡(jiǎn)單的示例來(lái)展示它們是如何工作的,需要的朋友可以參考下
    2024-03-03
  • Vue過濾器filters的用法及時(shí)間戳轉(zhuǎn)換問題

    Vue過濾器filters的用法及時(shí)間戳轉(zhuǎn)換問題

    Vue的filters過濾器是比較常見的一個(gè)知識(shí)點(diǎn),下面我將結(jié)合時(shí)間戳轉(zhuǎn)換的例子帶你快速了解filters的用法,感興趣的朋友一起看看吧
    2021-09-09

最新評(píng)論

盘山县| 武强县| 洛南县| 上犹县| 若尔盖县| 岐山县| 长宁区| 原阳县| 商城县| 蕲春县| 新巴尔虎左旗| 佛坪县| 普格县| 莫力| 于都县| 新民市| 连山| 远安县| 集贤县| 丹寨县| 株洲县| 冀州市| 炎陵县| 文安县| 芜湖县| 土默特右旗| 青海省| 桂东县| 正宁县| 乌拉特中旗| 神农架林区| 克什克腾旗| 永福县| 阿勒泰市| 芦山县| 周至县| 珠海市| 赫章县| 屯昌县| 中江县| 当雄县|