import OB from "@onebro/oba-common"; import CryptoJS from "crypto-js"; const key = OB.appvar("_APP_CONFIGS")["cctx-playground"].app.ekey; export class Encrypter { constructor(){} jsonFormatter = { stringify: function(cipherParams:any){ let ct,iv,s; ct = cipherParams.ciphertext.toString(CryptoJS.enc.Base64); if (cipherParams.iv) iv = cipherParams.iv.toString(); if (cipherParams.salt) s = cipherParams.salt.toString(); return iv+"\\"+ct+"\\"+s; }, parse: function(jsonStr:string) { const [iv,ct,s] = jsonStr.split("\\"); const cipherParams = CryptoJS.lib.CipherParams.create({ciphertext: CryptoJS.enc.Base64.parse(ct)}); if(iv) cipherParams.iv = CryptoJS.enc.Hex.parse(iv); if(s) cipherParams.salt = CryptoJS.enc.Hex.parse(s); return cipherParams; } }; encrypt = (value:any) => { value = typeof value == "string"? value: JSON.stringify(value); const encrypted = CryptoJS.AES.encrypt(value,key,{format:this.jsonFormatter,mode:CryptoJS.mode.CBC}).toString(); return encrypted; } decrypt = (value:any) => CryptoJS.AES.decrypt(value,key,{format:this.jsonFormatter}).toString(CryptoJS.enc.Utf8); }