Files
reader-star/packages/utils/src/crypto.ts

31 lines
665 B
TypeScript
Raw Normal View History

2026-01-16 13:06:44 +08:00
import CryptoJS from 'crypto-js'
/**
*
*/
2026-01-16 13:06:44 +08:00
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
}
}
}