亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue3 如何使用CryptoJS加密

 更新時(shí)間:2024年10月16日 11:41:05   作者:茶顏悅色  
CryptoJS是一個(gè)強(qiáng)大的JavaScript庫(kù),它提供了多種加密解密功能,尤其是AES加密方法,使用CryptoJS,我們可以有效地保護(hù)數(shù)據(jù)安全,防止信息泄露,通過(guò)簡(jiǎn)單的安裝和函數(shù)編寫(xiě),本文給大家介紹Vue3 如何使用CryptoJS加密,感興趣的朋友一起看看吧

為什么要加密?

現(xiàn)在的互聯(lián)網(wǎng)世界充滿(mǎn)了各種各樣的信息,有些信息非常重要,比如密碼、個(gè)人信息等。如果我們把這些信息直接發(fā)送到服務(wù)器,別人可能會(huì)截取到,然后偷走我們的信息。為了避免這種情況發(fā)生,我們需要把重要的信息變成別人看不懂的東西,這就是加密的作用。

CryptoJS 是什么?

CryptoJS 是一個(gè)非常好用的 JavaScript 庫(kù),它能幫我們加密和解密信息。這個(gè)庫(kù)很小巧,而且功能很強(qiáng)大,支持很多種加密方法。我們這里主要用它的 AES 加密功能。

如何安裝 CryptoJS?

首先,我們需要在項(xiàng)目里安裝 CryptoJS??梢杂孟旅娴拿顏?lái)安裝:

npm install crypto-js

或者

yarn add crypto-js

如何加密和解密?

現(xiàn)在我們已經(jīng)有了 CryptoJS,接下來(lái)就可以寫(xiě)代碼來(lái)加密和解密信息了。

密鑰和偏移量

加密需要一把“鑰匙”,這把鑰匙就是密鑰。另外還有一個(gè)叫“偏移量”的東西,它可以幫助我們更好地加密信息。這兩個(gè)東西一定要保密,不能讓別人知道。

import * as CryptoJS from "crypto-js";
// 密鑰和偏移量
// 這里使用環(huán)境變量來(lái)設(shè)置密鑰和偏移量,確保它們的安全性
const key = CryptoJS.enc.Utf8.parse(process.env.VUE_APP_KEY);
const iv = CryptoJS.enc.Utf8.parse(process.env.VUE_APP_IV);

加密函數(shù)

我們寫(xiě)一個(gè)函數(shù)來(lái)加密信息。這個(gè)函數(shù)接收一段明文(也就是正常能看懂的文字),然后返回加密后的文字。

// AES加密函數(shù)
export function encrypt(text: string): string {
  // 使用 CryptoJS 的 AES 方法加密文本
  const encrypted = CryptoJS.AES.encrypt(text, key, {
    mode: CryptoJS.mode.ECB, // 使用 ECB 模式
    padding: CryptoJS.pad.Pkcs7, // 使用 PKCS7 填充
    iv: iv // 使用偏移量
  });
  // 將加密后的數(shù)據(jù)轉(zhuǎn)換成 Base64
  const base64Cipher = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
  // 處理 Android 某些低版本的 BUG
  // 替換某些特殊字符,因?yàn)榧用芎蟮?Base64 字符串在某些設(shè)備上會(huì)有問(wèn)題
  const resultCipher = base64Cipher.replace(/\+/g, "-").replace(/\//g, "_");
  // 返回加密后的經(jīng)過(guò)處理的 Base64
  return resultCipher;
}

解密函數(shù)

我們還需要一個(gè)函數(shù)來(lái)解密信息。這個(gè)函數(shù)接收加密后的文字,然后返回正常的明文。

// AES解密函數(shù)
export function decrypt(encryptData: string): string {
  try {
    // 先將 Base64 還原一下,因?yàn)榧用艿臅r(shí)候做了一些字符的替換
    const restoreBase64 = encryptData.replace(/\-/g, "+").replace(/_/g, "/");
    // 解密
    const decryptedContent = CryptoJS.AES.decrypt(restoreBase64, key, {
      mode: CryptoJS.mode.ECB, // 使用 ECB 模式
      padding: CryptoJS.pad.Pkcs7, // 使用 PKCS7 填充
      iv: iv // 使用偏移量
    });
    // 將解密對(duì)象轉(zhuǎn)換成 UTF8 的字符串
    const resultDecipher = CryptoJS.enc.Utf8.stringify(decryptedContent);
    // 返回解密結(jié)果
    return resultDecipher;
  } catch (error) {
    // 如果解密失敗,返回空字符串
    return ""; 
  }
}

如何在 Vue.js 項(xiàng)目中使用

假設(shè)我們有了上面的加密和解密函數(shù),現(xiàn)在要在 Vue.js 項(xiàng)目中使用它們。

創(chuàng)建一個(gè) Vue 組件

我們創(chuàng)建一個(gè)簡(jiǎn)單的 Vue 組件,讓用戶(hù)輸入一些信息,然后可以加密和解密。

<template>
  <div>
    <input type="text" v-model="plaintext" placeholder="請(qǐng)輸入明文" />
    <button @click="encryptText">加密</button>
    <button @click="decryptText">解密</button>
    <p>加密后的文本: {{ ciphertext }}</p>
    <p>解密后的文本: {{ decryptedText }}</p>
  </div>
</template>
<script setup>
import { ref } from 'vue';
import { encrypt, decrypt } from './crypto'; // 導(dǎo)入我們寫(xiě)的加密和解密函數(shù)
// 定義響應(yīng)式狀態(tài)
const plaintext = ref('');
const ciphertext = ref('');
const decryptedText = ref('');
// 加密文本
function encryptText() {
  ciphertext.value = encrypt(plaintext.value);
}
// 解密文本
function decryptText() {
  decryptedText.value = decrypt(ciphertext.value);
}
</script>

到此這篇關(guān)于Vue3 使用CryptoJS加密的文章就介紹到這了,更多相關(guān)Vue3 CryptoJS加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue動(dòng)態(tài)路由加載時(shí)出現(xiàn)Cannot?find?module?xxx問(wèn)題

    vue動(dòng)態(tài)路由加載時(shí)出現(xiàn)Cannot?find?module?xxx問(wèn)題

    這篇文章主要介紹了vue動(dòng)態(tài)路由加載時(shí)出現(xiàn)Cannot?find?module?xxx問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • element input輸入框自動(dòng)獲取焦點(diǎn)的實(shí)現(xiàn)

    element input輸入框自動(dòng)獲取焦點(diǎn)的實(shí)現(xiàn)

    本文主要介紹了element input輸入框自動(dòng)獲取焦點(diǎn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Vue2和Vue3在v-for遍歷時(shí)ref獲取dom節(jié)點(diǎn)的區(qū)別及說(shuō)明

    Vue2和Vue3在v-for遍歷時(shí)ref獲取dom節(jié)點(diǎn)的區(qū)別及說(shuō)明

    這篇文章主要介紹了Vue2和Vue3在v-for遍歷時(shí)ref獲取dom節(jié)點(diǎn)的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue中的生命周期詳細(xì)解讀

    Vue中的生命周期詳細(xì)解讀

    這篇文章主要介紹了Vue中的生命周期詳細(xì)解讀,每個(gè) Vue 組件實(shí)例在創(chuàng)建時(shí)都需要經(jīng)歷一系列的初始化步驟,比如設(shè)置好數(shù)據(jù)偵聽(tīng),編譯模板,掛載實(shí)例到 DOM,以及在數(shù)據(jù)改變時(shí)更新 DOM,需要的朋友可以參考下
    2023-08-08
  • Vue+ElementUI?封裝簡(jiǎn)易PaginationSelect組件的詳細(xì)步驟

    Vue+ElementUI?封裝簡(jiǎn)易PaginationSelect組件的詳細(xì)步驟

    這篇文章主要介紹了Vue+ElementUI?封裝簡(jiǎn)易PaginationSelect組件,這里簡(jiǎn)單介紹封裝的一個(gè)Pagination-Select組件幾個(gè)步驟,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 一文詳解Vue3中的14種組件通信方式

    一文詳解Vue3中的14種組件通信方式

    對(duì)于日常使用vue3開(kāi)發(fā)項(xiàng)目的前端小伙伴來(lái)說(shuō),組件通信方式可以說(shuō)是必會(huì)的基本功,今天帶大家一起盤(pán)下vue3中的14種通信方式,希望對(duì)大家有所幫助
    2025-01-01
  • vue 父組件通過(guò)$refs獲取子組件的值和方法詳解

    vue 父組件通過(guò)$refs獲取子組件的值和方法詳解

    今天小編就為大家分享一篇vue 父組件通過(guò)$refs獲取子組件的值和方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • vue.js 解決v-model讓select默認(rèn)選中不生效的問(wèn)題

    vue.js 解決v-model讓select默認(rèn)選中不生效的問(wèn)題

    這篇文章主要介紹了vue.js 解決v-model讓select默認(rèn)選中不生效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Vue中的ESLint配置方式

    Vue中的ESLint配置方式

    這篇文章主要介紹了Vue中的ESLint配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue配合iView實(shí)現(xiàn)省市二級(jí)聯(lián)動(dòng)的示例代碼

    Vue配合iView實(shí)現(xiàn)省市二級(jí)聯(lián)動(dòng)的示例代碼

    本篇文章主要介紹了Vue配合iView實(shí)現(xiàn)省市二級(jí)聯(lián)動(dòng)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論