Vue3 如何使用CryptoJS加密
為什么要加密?
現(xiàn)在的互聯(lián)網(wǎng)世界充滿了各種各樣的信息,有些信息非常重要,比如密碼、個人信息等。如果我們把這些信息直接發(fā)送到服務(wù)器,別人可能會截取到,然后偷走我們的信息。為了避免這種情況發(fā)生,我們需要把重要的信息變成別人看不懂的東西,這就是加密的作用。
CryptoJS 是什么?
CryptoJS 是一個非常好用的 JavaScript 庫,它能幫我們加密和解密信息。這個庫很小巧,而且功能很強大,支持很多種加密方法。我們這里主要用它的 AES 加密功能。
如何安裝 CryptoJS?
首先,我們需要在項目里安裝 CryptoJS??梢杂孟旅娴拿顏戆惭b:
npm install crypto-js
或者
yarn add crypto-js
如何加密和解密?
現(xiàn)在我們已經(jīng)有了 CryptoJS,接下來就可以寫代碼來加密和解密信息了。
密鑰和偏移量
加密需要一把“鑰匙”,這把鑰匙就是密鑰。另外還有一個叫“偏移量”的東西,它可以幫助我們更好地加密信息。這兩個東西一定要保密,不能讓別人知道。
import * as CryptoJS from "crypto-js"; // 密鑰和偏移量 // 這里使用環(huán)境變量來設(shè)置密鑰和偏移量,確保它們的安全性 const key = CryptoJS.enc.Utf8.parse(process.env.VUE_APP_KEY); const iv = CryptoJS.enc.Utf8.parse(process.env.VUE_APP_IV);
加密函數(shù)
我們寫一個函數(shù)來加密信息。這個函數(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 // 替換某些特殊字符,因為加密后的 Base64 字符串在某些設(shè)備上會有問題 const resultCipher = base64Cipher.replace(/\+/g, "-").replace(/\//g, "_"); // 返回加密后的經(jīng)過處理的 Base64 return resultCipher; }
解密函數(shù)
我們還需要一個函數(shù)來解密信息。這個函數(shù)接收加密后的文字,然后返回正常的明文。
// AES解密函數(shù) export function decrypt(encryptData: string): string { try { // 先將 Base64 還原一下,因為加密的時候做了一些字符的替換 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 // 使用偏移量 }); // 將解密對象轉(zhuǎn)換成 UTF8 的字符串 const resultDecipher = CryptoJS.enc.Utf8.stringify(decryptedContent); // 返回解密結(jié)果 return resultDecipher; } catch (error) { // 如果解密失敗,返回空字符串 return ""; } }
如何在 Vue.js 項目中使用
假設(shè)我們有了上面的加密和解密函數(shù),現(xiàn)在要在 Vue.js 項目中使用它們。
創(chuàng)建一個 Vue 組件
我們創(chuàng)建一個簡單的 Vue 組件,讓用戶輸入一些信息,然后可以加密和解密。
<template> <div> <input type="text" v-model="plaintext" placeholder="請輸入明文" /> <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'; // 導入我們寫的加密和解密函數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue動態(tài)路由加載時出現(xiàn)Cannot?find?module?xxx問題
這篇文章主要介紹了vue動態(tài)路由加載時出現(xiàn)Cannot?find?module?xxx問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01element input輸入框自動獲取焦點的實現(xiàn)
本文主要介紹了element input輸入框自動獲取焦點的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10Vue2和Vue3在v-for遍歷時ref獲取dom節(jié)點的區(qū)別及說明
這篇文章主要介紹了Vue2和Vue3在v-for遍歷時ref獲取dom節(jié)點的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03Vue+ElementUI?封裝簡易PaginationSelect組件的詳細步驟
這篇文章主要介紹了Vue+ElementUI?封裝簡易PaginationSelect組件,這里簡單介紹封裝的一個Pagination-Select組件幾個步驟,結(jié)合示例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-08-08vue.js 解決v-model讓select默認選中不生效的問題
這篇文章主要介紹了vue.js 解決v-model讓select默認選中不生效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Vue配合iView實現(xiàn)省市二級聯(lián)動的示例代碼
本篇文章主要介紹了Vue配合iView實現(xiàn)省市二級聯(lián)動的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07