欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2024年12月31日 15:15:16   作者:沉默是金~  
文章介紹了如何在Vue項(xiàng)目中使用crypto-js庫對(duì)瀏覽器參數(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é)果通常是一個(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)目

    基于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)境打包,本地不能打開的問題

    今天小編就為大家分享一篇解決Vue-cli npm run build生產(chǎn)環(huán)境打包,本地不能打開的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue.js初學(xué)入門教程(1)

    vue.js初學(xué)入門教程(1)

    這篇文章主要為大家詳細(xì)介紹了vue.js初學(xué)入門教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 復(fù)刻畫龍產(chǎn)品vue實(shí)現(xiàn)新春氣泡兔

    復(fù)刻畫龍產(chǎn)品vue實(shí)現(xiàn)新春氣泡兔

    這篇文章主要為大家介紹了復(fù)刻畫龍產(chǎn)品之使用vue實(shí)現(xiàn)新春氣泡兔示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Vue API中setup ref reactive函數(shù)使用教程

    Vue 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)證解決方案

    本篇文章主要介紹了vuelidate 對(duì)于vueJs2.0的驗(yàn)證解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • vue+webpack模擬后臺(tái)數(shù)據(jù)的示例代碼

    vue+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實(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-07
  • vue實(shí)現(xiàn)底部菜單功能

    vue實(shí)現(xiàn)底部菜單功能

    本文通過實(shí)例代碼給大家介紹了vue實(shí)現(xiàn)底部菜單功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07
  • vue3+typeScript穿梭框的實(shí)現(xiàn)示例

    vue3+typeScript穿梭框的實(shí)現(xiàn)示例

    這篇文章主要介紹了vue3+typeScript穿梭框的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論