diff --git a/src/utils/cache/storageCache.ts b/src/utils/cache/storageCache.ts index 67dff61..906adb7 100644 --- a/src/utils/cache/storageCache.ts +++ b/src/utils/cache/storageCache.ts @@ -1,7 +1,7 @@ import { cacheCipher } from '@/settings/encryptionSetting' -import type { EncryptionParams } from '@/utils/cipherOld' -import { AesEncryption } from '@/utils/cipherOld' import { isNullOrUnDef } from '@/utils/is' +import type { Encryption, EncryptionParams } from '@/utils/cipher' +import { EncryptionFactory } from '@/utils/cipher' export interface CreateStorageParams extends EncryptionParams { prefixKey: string @@ -20,7 +20,10 @@ export function createStorage({ if (hasEncrypt && [key.length, iv.length].some(item => item !== 16)) throw new Error('When hasEncrypt is true, the key or iv must be 16 bits!') - const encryption = new AesEncryption({ key, iv }) + const persistEncryption: Encryption = EncryptionFactory.createAesEncryption({ + key: cacheCipher.key, + iv: cacheCipher.iv, + }) /** * Cache class @@ -31,12 +34,12 @@ export function createStorage({ const WebStorage = class WebStorage { private storage: Storage private prefixKey?: string - private encryption: AesEncryption + private encryption: Encryption private hasEncrypt: boolean constructor() { this.storage = storage this.prefixKey = prefixKey - this.encryption = encryption + this.encryption = persistEncryption this.hasEncrypt = hasEncrypt } @@ -57,7 +60,7 @@ export function createStorage({ time: Date.now(), expire: !isNullOrUnDef(expire) ? new Date().getTime() + expire * 1000 : null, }) - const stringifyValue = this.hasEncrypt ? this.encryption.encryptByAES(stringData) : stringData + const stringifyValue = this.hasEncrypt ? this.encryption.encrypt(stringData) : stringData this.storage.setItem(this.getKey(key), stringifyValue) } @@ -73,7 +76,7 @@ export function createStorage({ return def try { - const decVal = this.hasEncrypt ? this.encryption.decryptByAES(val) : val + const decVal = this.hasEncrypt ? this.encryption.decrypt(val) : val const data = JSON.parse(decVal) const { value, expire } = data if (isNullOrUnDef(expire) || expire >= new Date().getTime()) diff --git a/src/utils/cipherOld.ts b/src/utils/cipherOld.ts deleted file mode 100644 index fe4e2ad..0000000 --- a/src/utils/cipherOld.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { decrypt, encrypt } from 'crypto-js/aes' -import UTF8, { parse } from 'crypto-js/enc-utf8' -import pkcs7 from 'crypto-js/pad-pkcs7' -import ECB from 'crypto-js/mode-ecb' -import md5 from 'crypto-js/md5' -import Base64 from 'crypto-js/enc-base64' - -export interface EncryptionParams { - key: string - iv: string -} - -export class AesEncryption { - private key - private iv - - constructor(opt: Partial = {}) { - const { key, iv } = opt - if (key) - this.key = parse(key) - - if (iv) - this.iv = parse(iv) - } - - get getOptions() { - return { - mode: ECB, - padding: pkcs7, - iv: this.iv, - } - } - - encryptByAES(cipherText: string) { - return encrypt(cipherText, this.key, this.getOptions).toString() - } - - decryptByAES(cipherText: string) { - return decrypt(cipherText, this.key, this.getOptions).toString(UTF8) - } -} - -export function encryptByBase64(cipherText: string) { - return UTF8.parse(cipherText).toString(Base64) -} - -export function decodeByBase64(cipherText: string) { - return Base64.parse(cipherText).toString(UTF8) -} - -export function encryptByMd5(password: string) { - return md5(password).toString() -}