refactor(utils): 为工具函数添加注释并导出新模块 feat(utils): 新增防抖和节流工具函数 docs(utils): 为现有工具类添加中文注释 style(admin): 优化比赛配置页面UI样式 feat(admin): 实现比赛基础信息表单双向绑定 feat(admin): 新增页面头部公共组件 feat(admin): 完善分组管理自动生成逻辑 feat(admin): 增强题目配置功能与交互 fix(admin): 修复表单数据更新死循环问题
31 lines
665 B
TypeScript
31 lines
665 B
TypeScript
import CryptoJS from 'crypto-js'
|
|
/**
|
|
* 加密解密工具类
|
|
*/
|
|
export class Crypto<T extends object> {
|
|
/** Secret */
|
|
secret: string
|
|
|
|
constructor(secret: string) {
|
|
this.secret = secret
|
|
}
|
|
|
|
encrypt(data: T): string {
|
|
const dataString = JSON.stringify(data)
|
|
const encrypted = CryptoJS.AES.encrypt(dataString, this.secret)
|
|
return encrypted.toString()
|
|
}
|
|
|
|
decrypt(encrypted: string) {
|
|
const decrypted = CryptoJS.AES.decrypt(encrypted, this.secret)
|
|
const dataString = decrypted.toString(CryptoJS.enc.Utf8)
|
|
try {
|
|
return JSON.parse(dataString) as T
|
|
}
|
|
catch {
|
|
// avoid parse error
|
|
return null
|
|
}
|
|
}
|
|
}
|