AES加密解密,vue3中使用AES加密以及解密,vue项目中实现AES加密解密

目录

一、介绍

前端作用

后端作用

二、vue种实现、使用

三、封装 加密、解密 工具方法


一、介绍

AES(Advanced Encryption Standard)加密,即高级加密标准,是一种广泛使用的对称密钥加密算法,用于加密和解密数据。以下是对AES加密的详细介绍,以及其在前端和后端中的作用。

AES经过长时间的研究和测试,被认为是目前最安全的加密算法之一。

前端作用

  1. 保护敏感数据:在前端,AES加密可用于保护用户输入的敏感数据,如登录密码、个人身份信息、支付信息等,在传输到服务器之前进行加密,防止数据在传输过程中被截获或窃取。
  2. 提升用户体验:通过前端加密,可以在一定程度上减少用户对于数据安全的担忧,提升用户体验。同时,前端加密也可以减少服务器端的处理负担,因为服务器无需再对传输的数据进行额外的加密处理。
  3. 配合后端验证:前端加密通常与后端解密配合使用,前端加密后的数据需要在后端进行解密和验证,以确保数据的完整性和安全性。

后端作用

  1. 数据存储安全:在后端,AES加密可用于保护存储在数据库或其他存储介质中的敏感数据。通过加密存储,即使数据库被非法访问,攻击者也无法直接获取到明文数据。
  2. 防止数据泄露:后端加密是防止数据泄露的重要手段之一。通过加密处理,可以确保即使数据在传输过程中被截获,攻击者也无法直接获取到有价值的信息。
  3. 与其他安全措施配合:后端加密通常需要与其他安全措施配合使用,如访问控制、数据备份、安全审计等,以形成完整的数据安全保护体系。

二、vue种实现、使用

在Vue项目中使用AES加密解密,需要先安装crypto-js库。

pnpm 或者 npm  

pnpm install crypto-js
npm install crypto-js

三、封装 加密、解密 工具方法

AES加密 有两种 模式 ----  ECB模式  和 CBC模式

ECB(电子密码本模式)是一种简单的加密方式,将数据分成固定长度的块进行加密。以下是ECB模式的加密和解密方法

CBC(密码块链接模式)通过使用前一个块的加密结果来影响当前块的加密过程,从而提高安全性。

这里作者 只 对 ECB 模式 进行举例介绍

封装两个函数,分别为加密和解密。我们从 crypto-js库。里面引入 CryptoJS 这个对象。然后使用上面的方法。

网上的文章在使用时有很多种格式,经过作者实践,大部分都是错的,会造成加密失败和无法解密。根据测试,作者下面这种写法较为可靠。

还有一点非常重要,大家要注意公钥的保存,因为前后端我们使用公钥进行加密解密,公钥在保存上的安全性直接决定了加密的安全性。如果公钥被窃取加密就形同虚设了。我目前是放在了环境变量里面,因为环境变量文件里面的数据不会被保留成静态文件。

import CryptoJS from 'crypto-js'
/**
 * aes 解密
 * @param {string} text 需要解密的字符串
 * @returns {string}
 */
export function Decrypt(text) {
    let key = import.meta.env.VITE_SECRET_KEY; //公钥   vite格式环境变量,请根据需要更改

    let decrypt = CryptoJS.AES.decrypt({ ciphertext: CryptoJS.enc.Base64.parse(text) }, CryptoJS.enc.Utf8.parse(key), {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7,
    });

    return decrypt.toString(CryptoJS.enc.Utf8)
}

/**
 * aes 加密
 * @param {string}  text  需要加密的字符串
 * @returns {string}
 */
export function Encrypt(text) {
    let key = import.meta.env.VITE_SECRET_KEY; //公钥   vite格式环境变量,请根据需要更改
    let encrypt = CryptoJS.AES.encrypt(text, CryptoJS.enc.Utf8.parse(key), {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });

    return encrypt.toString()
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值