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