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

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

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

Vue 路由傳參加密

首先,創(chuàng)建一個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;

使用頁面:

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

接受參數(shù)頁面:

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

Vue項目:路由跳轉(zhuǎn)時中文傳參被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原型對象上

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

3.在vue文件中使用

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

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

1.md5

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

2.window對象自帶的編碼解碼

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

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

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

ascii to binary,用于解碼一個已經(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    vue實現(xiàn)書籍購物車功能

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

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

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

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

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

最新評論

永和县| 称多县| 贡觉县| 阿勒泰市| 康平县| 东乡| 哈密市| 巴林左旗| 灵武市| 西峡县| 兴安县| 连山| 克东县| 江川县| 三原县| 卢湾区| 富宁县| 巴中市| 塘沽区| 呼图壁县| 肇州县| 南靖县| 碌曲县| 独山县| 聂拉木县| 安吉县| 涪陵区| 秦皇岛市| 太保市| 万宁市| 保定市| 丰台区| 莱州市| 太保市| 土默特右旗| 永吉县| 福贡县| 沙洋县| 大余县| 阿拉善右旗| 金塔县|