import { encrypt, decrypt } from 'crypto-js/aes' import { parse } from 'crypto-js/enc-utf8' import pkcs7 from 'crypto-js/pad-pkcs7' import ECB from 'crypto-js/mode-ecb' import UTF8 from 'crypto-js/enc-utf8' // 注意 key 和 iv 至少都需要 16 位 const AES_KEY = '1111111111000000' const AES_IV = '0000001111111111' export class AesEncryption { private key private iv constructor(key = AES_KEY, iv = AES_IV) { this.key = parse(key) this.iv = parse(iv) } get getOptions() { return { mode: ECB, padding: pkcs7, iv: this.iv } } encryptByAES(text: string) { return encrypt(text, this.key, this.getOptions).toString() } decryptByAES(text: string) { return decrypt(text, this.key, this.getOptions).toString(UTF8) } }