nest 实现 aes 加密解密和 md5 加密
安装
bash
pnpm install crypto-js创建 crypto 模块
crypto.module.ts
ts
import { Module } from "@nestjs/common";
import { CryptoService } from "./crypto.service";
@Module({
providers: [CryptoService],
exports: [CryptoService],
})
export class CryptoModule {}crypto.service.ts
ts
import { Inject, Injectable } from "@nestjs/common";
// 加密解密模块
import * as CryptoJS from "crypto-js";
import dotenv from "dotenv";
// 加载环境变量
dotenv.config();
@Injectable()
export class CryptoService {
private key: string;
private iv: string;
constructor() {
this.key = CryptoJS.enc.Utf8.parse(process.env.CRYPTO_KEY);
this.iv = CryptoJS.enc.Utf8.parse(process.env.CRYPTO_IV);
}
// 解密
aesDecrypt(word) {
let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
let decrypt = CryptoJS.AES.decrypt(srcs, this.key, {
iv: this.iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
// 加密
aesEncrypt(word) {
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, this.key, {
iv: this.iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7,
});
return encrypted.ciphertext.toString().toUpperCase();
}
// md5加密
md5Encrypt(word: string): string {
return CryptoJS.MD5(word).toString();
}
}其他模块使用
xxxx.module.ts
ts
import { Module } from "@nestjs/common";
import { TestdemoService } from "./testdemo.service";
import { TestdemoController } from "./testdemo.controller";
// 增加加密解密模块
import { CryptoModule } from "../../commonModules/crypto/crypto.module";
@Module({
imports: [CryptoModule],
controllers: [
TestdemoController, // Excel 动态模块
],
providers: [TestdemoService],
})
export class TestdemoModule {}xxx.service.ts
ts
import { Inject, Injectable } from "@nestjs/common";
// 加密解密
import { CryptoService } from "../../commonModules/crypto/crypto.service";
@Injectable()
export class TestdemoService {
// 加密解密
@Inject()
private readonly cryptoService: CryptoService;
// aes加密
async aesEncrypt(data: string) {
const result = await this.cryptoService.aesEncrypt(data);
return result;
}
// aes解密
async aesDecrypt(data: string) {
const result = await this.cryptoService.aesDecrypt(data);
return result;
}
// md5加密
async md5Encrypt(data: string) {
const result = await this.cryptoService.md5Encrypt(data);
return result;
}
}