Skip to content

利用aes加密解密和md5加密

安装依赖

bash
npm install crypto-js
npm install -D @types/crypto-js

使用

  • src/utils/secret.ts
ts
import CryptoJS from "crypto-js";

const KEY = CryptoJS.enc.Utf8.parse(import.meta.env.VITE_AES_KEY); // 16字节
const IV = CryptoJS.enc.Utf8.parse(import.meta.env.VITE_AES_IV); // 16字节

/** AES 加密:UTF-8 明文 → Base64 密文 */
export function aesEncrypt(plainText: string): string {
  return CryptoJS.AES.encrypt(plainText, KEY, {
    iv: IV,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7,
  }).toString(); // 默认即 Base64
}

/** AES 解密:Base64 密文 → UTF-8 明文 */
export function aesDecrypt(cipherText: string): string | null {
  try {
    const bytes = CryptoJS.AES.decrypt(cipherText, KEY, {
      iv: IV,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7,
    });
    const result = bytes.toString(CryptoJS.enc.Utf8);
    return result || null;
  } catch {
    return null;
  }
}

/** MD5:支持可选加盐 */
export function md5Encrypt(text: string, salt = ""): string {
  return CryptoJS.MD5(salt + text).toString(); // 32位小写Hex
}

// 调用示例
const cipher = aesEncrypt(JSON.stringify({ username: "admin", pwd: "123456" }));
console.log("密文:", cipher);
const plain = aesDecrypt(cipher);
console.log("明文:", plain);
console.log("MD5:", md5Encrypt("123456", "@mySalt"));

使用

  • 一般给接口参数加密的时候会用到