使用crypto-js进行AES加解密

538 阅读1分钟

一、简介

最近在项目中,遇到要进行加解密字段的需求,跟后端、产品开会,约好个人信息等隐私字段需要加密传输。于是将目光聚焦到 crypto-js 上面。

二、安装

// pnpm
pnpm install crypto-js
// npm
npm install crypto-js
// yarn
yarn add crypto-js

三、定义工具类

在你的项目 src 目录下创建 utils 文件夹存放全局工具类。

// 引入
import CryptoJS from 'crypto-js'

// 加密
export function encrypt (word, keyStr, ivStr) {
  keyStr = keyStr || '后端给你的key密钥'
  ivStr = ivStr || '后端给你的iv偏移量'
  const key = CryptoJS.enc.Utf8.parse(keyStr)
  const iv = CryptoJS.enc.Utf8.parse(ivStr)
  const srcs = CryptoJS.enc.Utf8.parse(word)
  const encrypted = CryptoJS.AES.encrypt(srcs, key, {
    iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  return encrypted.toString()
}

// 解密
export function decrypt (word, keyStr, ivStr) {
  if (!word) return {}
  keyStr = keyStr || '后端给你的key密钥'
  ivStr = ivStr || '后端给你的iv偏移量'
  const key = CryptoJS.enc.Utf8.parse(keyStr)
  const iv = CryptoJS.enc.Utf8.parse(ivStr)
  const decrypted = CryptoJS.AES.decrypt(word, key, {
    iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })
  return decrypted.toString(CryptoJS.enc.Utf8)
}

四、使用

// 引入方法
import { encrypt, decrypt } from '@/utils.js'

// 使用
encrypt(password)
decrypt(idCardNumber)