利用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"));使用
- 一般给接口参数加密的时候会用到