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

Vue3 如何使用CryptoJS加密

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

為什么要加密?

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

CryptoJS 是什么?

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

如何安裝 CryptoJS?

首先,我們需要在項目里安裝 CryptoJS。可以用下面的命令來安裝:

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'; // 導(dǎo)入我們寫的加密和解密函數(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)文章

  • Vitepress的文檔渲染基礎(chǔ)教程

    Vitepress的文檔渲染基礎(chǔ)教程

    這篇文章主要為大家介紹了Vitepress的文檔渲染基礎(chǔ)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • uniapp和vue組件之間的傳值(父子傳值,兄弟傳值,跨級傳值,vuex)

    uniapp和vue組件之間的傳值(父子傳值,兄弟傳值,跨級傳值,vuex)

    這篇文章主要介紹了uniapp和vue組件之間的傳值(父子傳值,兄弟傳值,跨級傳值,vuex),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue遍歷對象中的數(shù)組取值示例

    vue遍歷對象中的數(shù)組取值示例

    今天小編就為大家分享一篇vue遍歷對象中的數(shù)組取值示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue打包后生成一個配置文件可以修改IP

    vue打包后生成一個配置文件可以修改IP

    本文主要介紹了修改Vue項目運行的IP和端口,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • vite動態(tài)導(dǎo)入頁面動態(tài)import組件實現(xiàn)方式

    vite動態(tài)導(dǎo)入頁面動態(tài)import組件實現(xiàn)方式

    本文總結(jié)了在使用Vite進行動態(tài)導(dǎo)入頁面和組件時遇到的問題,由于Vite與Webpack在處理動態(tài)import方面有所不同,需要采用特殊方法,文章強調(diào)了從后臺獲取路由表并動態(tài)引入組件的實踐方法
    2026-04-04
  • vue單文件組件的實現(xiàn)

    vue單文件組件的實現(xiàn)

    最近翻閱了一下vue。發(fā)覺有一個單文件組件之前基本忽視掉了。所以本文就詳細的介紹了vue單文件組件的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • vue腳手架安裝以及安裝失敗問題解決辦法

    vue腳手架安裝以及安裝失敗問題解決辦法

    我們通常會用到腳手架vuecli創(chuàng)建項目,此時需要安裝腳手架,下面這篇文章主要給大家介紹了關(guān)于vue腳手架安裝以及安裝失敗問題的解決辦法,需要的朋友可以參考下
    2022-07-07
  • Vue3 JSX解釋器的實現(xiàn)

    Vue3 JSX解釋器的實現(xiàn)

    本文主要介紹了Vue3 JSX解釋器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • 如何解決vue項目打包后文件過大問題

    如何解決vue項目打包后文件過大問題

    這篇文章主要介紹了如何解決vue項目打包后文件過大問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 如何利用vscode-icons-js在Vue3項目中實現(xiàn)文件圖標展示

    如何利用vscode-icons-js在Vue3項目中實現(xiàn)文件圖標展示

    在開發(fā)文件管理系統(tǒng)或類似的項目時,我們常常需要根據(jù)文件類型展示對應(yīng)的文件圖標,這樣可以提高用戶體驗,本文將介紹如何在Vue3項目中利用vscode-icons-js庫,實現(xiàn)類似VSCode的文件圖標展示效果,感興趣的朋友一起看看吧
    2024-08-08

最新評論

巫溪县| 民勤县| 甘肃省| 南丰县| 乌拉特中旗| 辽源市| 通河县| 玉环县| 兴城市| 文成县| 密山市| 镇江市| 宁夏| 射洪县| 崇文区| 专栏| 屏南县| 上蔡县| 甘南县| 康马县| 原阳县| 江源县| 彭山县| 宿迁市| 稻城县| 丰城市| 花莲市| 龙口市| 灵台县| 云和县| 防城港市| 拜泉县| 蒙山县| 寿光市| 皋兰县| 盐边县| 土默特左旗| 湄潭县| 满洲里市| 儋州市| 汉源县|