前端加密解密- base64、md5、sha256、AES

文章目录

一、base64

  • 加密encode Base64.encode()
  • 解密decode Base64.decode()
javascript 复制代码
let Base64 = require('js-base64').Base64

二、md5(只能加密,不能解密)

使用场景: 用户密码存储、文件校验

使用

  • npm安装: npm install crypto-js --save/npm install js-md5
  • 哪个组件使用就引入:
  • 定义方法,然后调用
javascript 复制代码
import md5 from 'js-md5';
import { MD5 } from 'crypto-js';
//使用
md5(text)
MD5(text).toString() //crypto-js 返回的是 WordArray 对象,需调用 .toString() 转为字符串 ‌

三、sha256 (不可解)

使用

  • npm安装:npm install js-sha256
  • 引入及使用
javascript 复制代码
import sha256 from 'js-sha256';
console.log(sha256('hello world')); // 输出加密后的字符串

四、AES(crypto-js‌ 库实现)

使用

  • npm安装
  • 封装加密/解密工具函数
bash 复制代码
npm install crypto-js
# 或使用 yarn
yarn add crypto-js

创建文件如 utils/aes.js,统一管理加解密逻辑:

javascript 复制代码
import CryptoJS from 'crypto-js'

const SECRET_KEY = 'your-32-byte-secret-key-1234567890' // 密钥需16/24/32字节
const IV = '1234567890123456' // CBC 模式需 16 字节 IV

export function encrypt(plaintext) {
  const encrypted = CryptoJS.AES.encrypt(plaintext, CryptoJS.enc.Utf8.parse(SECRET_KEY), {
    iv: CryptoJS.enc.Utf8.parse(IV),
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  return encrypted.toString()
}

export function decrypt(ciphertext) {
  const decrypted = CryptoJS.AES.decrypt(ciphertext, CryptoJS.enc.Utf8.parse(SECRET_KEY), {
    iv: CryptoJS.enc.Utf8.parse(IV),
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  return decrypted.toString(CryptoJS.enc.Utf8)
}
javascript 复制代码
//使用
import { encrypt, decrypt } from '@/utils/aes'
console.log(encrypt(text),decrypt(text))
相关推荐
默_笙8 小时前
🚍 一条 Todo 的奇幻漂流:TypeScript 全栈类型安全的"护照检查"
前端·javascript
计算机魔术师9 小时前
NVIDIA 以 129.3 亿美元收购 Hugging Face
前端
平头哥技术团队9 小时前
Day 01 | 用 HTML 写第一个网页:双击就能在浏览器打开
前端
weixin_422555429 小时前
el-menu子菜单点击就被激活,恢复之前的激活状态
javascript·vue.js·elementui
计算机魔术师10 小时前
两年翻45倍!英伟达靠买买买建成千亿投资帝国
前端
paopaokaka_luck10 小时前
基于springboot3+vue3的精准扶贫管理系统(AI 问答、ECharts 图形化分析)
前端·人工智能·echarts
l1m0_10 小时前
智能电动自行车管理后台实战:AI生成页面与React组件化技巧
前端·react.js·ui·ai·设计
Patrick_Wilson10 小时前
为什么gitlab的MR会默认有一个merge commit
前端·git·gitlab
en.en..10 小时前
Linux mmap 内存映射深度解析:基于帧缓冲 /dev/fb0
java·服务器·前端
后台模板学习11 小时前
从0到1用Vite构建电商订单系统前端性能优化方案
前端