Vue 針對(duì)瀏覽器參數(shù)過長(zhǎng)實(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ù)過長(zhǎng)實(shí)現(xiàn)瀏覽器參數(shù)加密解密的文章就介紹到這了,更多相關(guān)vue瀏覽器參數(shù)加密解密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于vue3和element plus實(shí)現(xiàn)甘特圖
甘特圖是一種重要的項(xiàng)目管理工具,它可以通過圖形化的方式展示項(xiàng)目的進(jìn)度和時(shí)間表,甘特圖通常由一個(gè)橫軸和一個(gè)縱軸組成,甘特圖對(duì)于項(xiàng)目管理非常重要,所以本文給大家介紹了如何基于vue3和element plus實(shí)現(xiàn)甘特圖,需要的朋友可以參考下2024-06-06
vue2.0+vue-router構(gòu)建一個(gè)簡(jiǎn)單的列表頁(yè)的示例代碼
這篇文章主要介紹了vue2.0+vue-router構(gòu)建一個(gè)簡(jiǎn)單的列表頁(yè)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
Vue3.0使用ref和reactive來創(chuàng)建響應(yīng)式數(shù)據(jù)
ref?和?reactive?是?Composition?API?中用來創(chuàng)建響應(yīng)式數(shù)據(jù)的兩個(gè)核心函數(shù),在本篇文章中,我們將詳細(xì)講解如何使用?ref?和?reactive?來創(chuàng)建響應(yīng)式數(shù)據(jù),并展示它們之間的區(qū)別和使用場(chǎng)景,需要的朋友可以參考下2024-11-11
一文詳解如何在Vue網(wǎng)站中實(shí)現(xiàn)多語(yǔ)言支持
在當(dāng)今全球化的互聯(lián)網(wǎng)環(huán)境中,為網(wǎng)站提供多語(yǔ)言支持已成為提升用戶體驗(yàn)和擴(kuò)大受眾范圍的關(guān)鍵策略,本文為大家介紹了如何在Vue網(wǎng)站中實(shí)現(xiàn)多語(yǔ)種支持功能,有需要的可以了解下2025-03-03
vue-cli3使用 DllPlugin 實(shí)現(xiàn)預(yù)編譯提升構(gòu)建速度
這篇文章主要介紹了vue-cli3使用 DllPlugin 實(shí)現(xiàn)預(yù)編譯提升構(gòu)建速度 ,需要的朋友可以參考下2019-04-04
在vue中給后臺(tái)接口傳的值為數(shù)組的格式代碼
這篇文章主要介紹了在vue中給后臺(tái)接口傳的值為數(shù)組的格式代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
unplugin-svg-component優(yōu)雅使用svg圖標(biāo)指南
這篇文章主要為大家介紹了unplugin-svg-component優(yōu)雅使用svg圖標(biāo)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03

