Vue 針對(duì)瀏覽器參數(shù)過長實(shí)現(xiàn)瀏覽器參數(shù)加密解密的操作方法
1、首先安裝crypto-js
npm install crypto-js
1、在router/index.js中添加如下代碼
在utils工具類添加如下
encryption.js源碼
import CryptoJS from 'crypto-js' import CryptoJSCore from 'crypto-js/core' import AES from 'crypto-js/aes' import ZeroPadding from 'crypto-js/pad-zeropadding' import Utf8, { parse } from 'crypto-js/enc-utf8' import Base64 from 'crypto-js/enc-base64' /* * 加密 解密 */ const keyHex = parse('1234567890123456') // 十六位數(shù)作為密鑰,自行修改 const ivHex = CryptoJS.lib.WordArray.random(128 / 8) // 十六位數(shù)作為密鑰偏移量 隨機(jī)生成 /** * 加密 * @param {String} key * @returns {string} */ // 加密后的結(jié)果通常是一個(gè)CipherParams對(duì)象,其中包含了加密后的密文數(shù)據(jù),而密文數(shù)據(jù)本身是一個(gè)WordArray對(duì)象。同樣,在解密過程中,解密后的結(jié)果也是一個(gè)WordArray對(duì)象。 export const getEncrypt = (key) => { try { key = JSON.stringify(key) } catch (e) { console.warn(e) } // key需要是WordArray類型 return JSON.stringify({ encrypt: AES.encrypt(key, keyHex, { mode: CryptoJSCore.mode.CBC, padding: ZeroPadding, iv: ivHex, }).toString(), iv: ivHex, }) } /** * 加密后轉(zhuǎn)base64 * @param {String}} key */ export const getEncryptToBase64 = (key) => { const encryptStr = getEncrypt(key) const wordArray = Utf8.parse(encryptStr) //轉(zhuǎn)為WordArray對(duì)象 return Base64.stringify(wordArray) } /** * 解密 * @param data * @returns {string} */ export const getDecrypt = (data) => { let { encrypt, iv } = JSON.parse(data) let decrypted = AES.decrypt( { ciphertext: Base64.parse(encrypt), }, keyHex, { mode: CryptoJSCore.mode.CBC, padding: ZeroPadding, iv: iv, } ).toString(Utf8) //轉(zhuǎn)換為指定編碼的字符串 try { decrypted = JSON.parse(decrypted) } catch (e) { console.warn(e) } return decrypted } /** * 對(duì)base64數(shù)據(jù)解密 先解析base64,在做解密 * @param {String} data * @returns {string} */ export const getDecryptByBase64 = (data) => { // 將Base64字符串轉(zhuǎn)換為WordArray const parsedWordArray = Base64.parse(data) // WordArray對(duì)象轉(zhuǎn)換成一個(gè)UTF-8編碼的字符串 const decryptStr = Utf8.stringify(parsedWordArray) return getDecrypt(decryptStr) }
query.js源碼
import CryptoJS from 'crypto-js' import CryptoJSCore from 'crypto-js/core' import AES from 'crypto-js/aes' import ZeroPadding from 'crypto-js/pad-zeropadding' import Utf8, { parse } from 'crypto-js/enc-utf8' import Base64 from 'crypto-js/enc-base64' /* * 加密 解密 */ const keyHex = parse('1234567890123456') // 十六位數(shù)作為密鑰,自行修改 const ivHex = CryptoJS.lib.WordArray.random(128 / 8) // 十六位數(shù)作為密鑰偏移量 隨機(jī)生成 /** * 加密 * @param {String} key * @returns {string} */ // 加密后的結(jié)果通常是一個(gè)CipherParams對(duì)象,其中包含了加密后的密文數(shù)據(jù),而密文數(shù)據(jù)本身是一個(gè)WordArray對(duì)象。同樣,在解密過程中,解密后的結(jié)果也是一個(gè)WordArray對(duì)象。 export const getEncrypt = (key) => { try { key = JSON.stringify(key) } catch (e) { console.warn(e) } // key需要是WordArray類型 return JSON.stringify({ encrypt: AES.encrypt(key, keyHex, { mode: CryptoJSCore.mode.CBC, padding: ZeroPadding, iv: ivHex, }).toString(), iv: ivHex, }) } /** * 加密后轉(zhuǎn)base64 * @param {String}} key */ export const getEncryptToBase64 = (key) => { const encryptStr = getEncrypt(key) const wordArray = Utf8.parse(encryptStr) //轉(zhuǎn)為WordArray對(duì)象 return Base64.stringify(wordArray) } /** * 解密 * @param data * @returns {string} */ export const getDecrypt = (data) => { let { encrypt, iv } = JSON.parse(data) let decrypted = AES.decrypt( { ciphertext: Base64.parse(encrypt), }, keyHex, { mode: CryptoJSCore.mode.CBC, padding: ZeroPadding, iv: iv, } ).toString(Utf8) //轉(zhuǎn)換為指定編碼的字符串 try { decrypted = JSON.parse(decrypted) } catch (e) { console.warn(e) } return decrypted } /** * 對(duì)base64數(shù)據(jù)解密 先解析base64,在做解密 * @param {String} data * @returns {string} */ export const getDecryptByBase64 = (data) => { // 將Base64字符串轉(zhuǎn)換為WordArray const parsedWordArray = Base64.parse(data) // WordArray對(duì)象轉(zhuǎn)換成一個(gè)UTF-8編碼的字符串 const decryptStr = Utf8.stringify(parsedWordArray) return getDecrypt(decryptStr) }
到此這篇關(guān)于Vue 針對(duì)瀏覽器參數(shù)過長實(shí)現(xiàn)瀏覽器參數(shù)加密解密的文章就介紹到這了,更多相關(guān)vue瀏覽器參數(shù)加密解密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于vuejs實(shí)現(xiàn)一個(gè)todolist項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了基于vuejs實(shí)現(xiàn)一個(gè)todolist項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開的問題
今天小編就為大家分享一篇解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09復(fù)刻畫龍產(chǎn)品vue實(shí)現(xiàn)新春氣泡兔
這篇文章主要為大家介紹了復(fù)刻畫龍產(chǎn)品之使用vue實(shí)現(xiàn)新春氣泡兔示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Vue API中setup ref reactive函數(shù)使用教程
setup是用來寫組合式api,內(nèi)部的數(shù)據(jù)和方法需要通過return之后,模板才能使用。在之前vue2中,data返回的數(shù)據(jù),可以直接進(jìn)行雙向綁定使用,如果我們把setup中數(shù)據(jù)類型直接雙向綁定,發(fā)現(xiàn)變量并不能實(shí)時(shí)響應(yīng)。接下來就詳細(xì)看看它們的使用2022-12-12詳解vuelidate 對(duì)于vueJs2.0的驗(yàn)證解決方案
本篇文章主要介紹了vuelidate 對(duì)于vueJs2.0的驗(yàn)證解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03vue+webpack模擬后臺(tái)數(shù)據(jù)的示例代碼
這篇文章主要介紹了vue+webpack模擬后臺(tái)數(shù)據(jù)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-07-07基于Vue實(shí)現(xiàn)自定義組件的方式引入圖標(biāo)
在vue項(xiàng)目中我們經(jīng)常遇到圖標(biāo),下面這篇文章主要給大家介紹了關(guān)于如何基于Vue實(shí)現(xiàn)自定義組件的方式引入圖標(biāo)的相關(guān)資料,文章通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07vue3+typeScript穿梭框的實(shí)現(xiàn)示例
這篇文章主要介紹了vue3+typeScript穿梭框的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12