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

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

 更新時間:2024年12月31日 15:15:16   作者:沉默是金~  
文章介紹了如何在Vue項目中使用crypto-js庫對瀏覽器參數(shù)進(jìn)行加密和解密,以解決參數(shù)過長的問題,在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é)果通常是一個CipherParams對象,其中包含了加密后的密文數(shù)據(jù),而密文數(shù)據(jù)本身是一個WordArray對象。同樣,在解密過程中,解密后的結(jié)果也是一個WordArray對象。
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對象
  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
}
/**
 * 對base64數(shù)據(jù)解密  先解析base64,在做解密
 * @param {String} data
 * @returns {string}
 */
export const getDecryptByBase64 = (data) => {
  // 將Base64字符串轉(zhuǎn)換為WordArray
  const parsedWordArray = Base64.parse(data)
  //   WordArray對象轉(zhuǎn)換成一個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é)果通常是一個CipherParams對象,其中包含了加密后的密文數(shù)據(jù),而密文數(shù)據(jù)本身是一個WordArray對象。同樣,在解密過程中,解密后的結(jié)果也是一個WordArray對象。
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對象
  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
}
/**
 * 對base64數(shù)據(jù)解密  先解析base64,在做解密
 * @param {String} data
 * @returns {string}
 */
export const getDecryptByBase64 = (data) => {
  // 將Base64字符串轉(zhuǎn)換為WordArray
  const parsedWordArray = Base64.parse(data)
  //   WordArray對象轉(zhuǎn)換成一個UTF-8編碼的字符串
  const decryptStr = Utf8.stringify(parsedWordArray)
  return getDecrypt(decryptStr)
}

到此這篇關(guān)于Vue 針對瀏覽器參數(shù)過長實現(xiàn)瀏覽器參數(shù)加密解密的文章就介紹到這了,更多相關(guān)vue瀏覽器參數(shù)加密解密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于vue3和element plus實現(xiàn)甘特圖

    基于vue3和element plus實現(xiàn)甘特圖

    甘特圖是一種重要的項目管理工具,它可以通過圖形化的方式展示項目的進(jìn)度和時間表,甘特圖通常由一個橫軸和一個縱軸組成,甘特圖對于項目管理非常重要,所以本文給大家介紹了如何基于vue3和element plus實現(xiàn)甘特圖,需要的朋友可以參考下
    2024-06-06
  • vue2.0+vue-router構(gòu)建一個簡單的列表頁的示例代碼

    vue2.0+vue-router構(gòu)建一個簡單的列表頁的示例代碼

    這篇文章主要介紹了vue2.0+vue-router構(gòu)建一個簡單的列表頁的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    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ù)的兩個核心函數(shù),在本篇文章中,我們將詳細(xì)講解如何使用?ref?和?reactive?來創(chuàng)建響應(yīng)式數(shù)據(jù),并展示它們之間的區(qū)別和使用場景,需要的朋友可以參考下
    2024-11-11
  • vue中this.$parent的使用方式

    vue中this.$parent的使用方式

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

    一文詳解如何在Vue網(wǎng)站中實現(xiàn)多語言支持

    在當(dāng)今全球化的互聯(lián)網(wǎng)環(huán)境中,為網(wǎng)站提供多語言支持已成為提升用戶體驗和擴(kuò)大受眾范圍的關(guān)鍵策略,本文為大家介紹了如何在Vue網(wǎng)站中實現(xiàn)多語種支持功能,有需要的可以了解下
    2025-03-03
  • webstorm+vue初始化項目的方法

    webstorm+vue初始化項目的方法

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

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

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

    Vue3 插槽使用匯總

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

    在vue中給后臺接口傳的值為數(shù)組的格式代碼

    這篇文章主要介紹了在vue中給后臺接口傳的值為數(shù)組的格式代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    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

最新評論

河东区| 保靖县| 鹤峰县| 呼玛县| 白水县| 黔江区| 晋宁县| 壶关县| 贵定县| 贵南县| 皋兰县| 荃湾区| 亚东县| 黎川县| 南丰县| 会昌县| 鄂伦春自治旗| 呼图壁县| 江西省| 温州市| 保德县| 荔浦县| 高阳县| 兴义市| 武乡县| 通山县| 科技| 三都| 陆丰市| 元氏县| 吉水县| 九龙县| 萨嘎县| 临城县| 富锦市| 濮阳市| 宜宾市| 策勒县| 霍城县| 凤山市| 财经|