Files
reader-star/packages/utils/src/crypto.ts
rjl 2639aef69b feat(admin): 添加比赛管理页面功能优化
refactor(utils): 为工具函数添加注释并导出新模块
feat(utils): 新增防抖和节流工具函数
docs(utils): 为现有工具类添加中文注释

style(admin): 优化比赛配置页面UI样式
feat(admin): 实现比赛基础信息表单双向绑定
feat(admin): 新增页面头部公共组件
feat(admin): 完善分组管理自动生成逻辑
feat(admin): 增强题目配置功能与交互

fix(admin): 修复表单数据更新死循环问题
2026-01-20 10:58:42 +08:00

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
}
}
}