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

Vue 針對(duì)瀏覽器參數(shù)過長(zhǎng)實(shí)現(xiàn)瀏覽器參數(shù)加密解密的操作方法

 更新時(shí)間:2024年12月31日 15:15:16   作者:沉默是金~  
文章介紹了如何在Vue項(xiàng)目中使用crypto-js庫(kù)對(duì)瀏覽器參數(shù)進(jìn)行加密和解密,以解決參數(shù)過長(zhǎng)的問題,在router/index.js中添加了相關(guān)代碼,并在utils工具類中添加了encryption.js和query.js源碼,感興趣的朋友一起看看吧

 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)甘特圖

    基于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è)的示例代碼

    這篇文章主要介紹了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ù)

    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中this.$parent的使用方式

    vue中this.$parent的使用方式

    這篇文章主要介紹了vue中this.$parent的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 一文詳解如何在Vue網(wǎng)站中實(shí)現(xiàn)多語(yǔ)言支持

    一文詳解如何在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
  • webstorm+vue初始化項(xiàng)目的方法

    webstorm+vue初始化項(xiàng)目的方法

    今天小編就為大家分享一篇webstorm+vue初始化項(xiàng)目的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • vue-cli3使用 DllPlugin 實(shí)現(xiàn)預(yù)編譯提升構(gòu)建速度

    vue-cli3使用 DllPlugin 實(shí)現(xiàn)預(yù)編譯提升構(gòu)建速度

    這篇文章主要介紹了vue-cli3使用 DllPlugin 實(shí)現(xiàn)預(yù)編譯提升構(gòu)建速度 ,需要的朋友可以參考下
    2019-04-04
  • Vue3 插槽使用匯總

    Vue3 插槽使用匯總

    這篇文章主要給大家分享了Vue3的 插槽使用匯總,在 2.6.0中,vue 為具名插槽和作用于插槽引入了一個(gè)新的統(tǒng)一語(yǔ)法:v-slot。它取代了 slot 和 slot-scope 在新版中的應(yīng)用,下面就一起來看看文章的詳細(xì)內(nèi)容吧
    2021-12-12
  • 在vue中給后臺(tái)接口傳的值為數(shù)組的格式代碼

    在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)指南

    這篇文章主要為大家介紹了unplugin-svg-component優(yōu)雅使用svg圖標(biāo)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評(píng)論

西安市| 双城市| 刚察县| 金坛市| 登封市| 普定县| 左贡县| 简阳市| 西乌| 四川省| 瑞昌市| 天祝| 江达县| 龙胜| 新郑市| 镇江市| 台湾省| 甘泉县| 济宁市| 壶关县| 宣汉县| 兴文县| 阳东县| 海口市| 博白县| 中阳县| 平和县| 景宁| 长沙市| 北宁市| 卢氏县| 武威市| 盐山县| 舒兰市| 潞城市| 翼城县| 刚察县| 松潘县| 信丰县| 汉寿县| 瑞昌市|