数据加密

对称加解密

加密

en(value: T)

  • value 加密数据
点击查看
import CryptoJS from 'crypto-js'
import secretKey from '@/config/secretKey'

/**
 * @Author: Mankeung
 * @description: 加密
 * @param {T} value 加密数据
 * @return {string}
 */
const en = <T>(value: T): string => {
	try {
		const srcs = CryptoJS.enc.Utf8.parse(JSON.stringify(value))
		const encrypted = CryptoJS.AES.encrypt(srcs, secretKey.crypot.key, {
			iv: secretKey.crypot.iv,
			mode: CryptoJS.mode.CBC,
			padding: CryptoJS.pad.Pkcs7
		})
		return encrypted.toString()
	} catch (error: any) {
		console.error(`加密数据${value}出错了~`)
		throw new Error(error)
	}
}
  • 例子:
const str = this.$mk.utils.crypto.en({
    name: 'mankeung'
})

console.log(str)

解密

de(en: string)

  • en 待解密数据
点击查看
/**
 * @Author: Mankeung
 * @description: 解密
 * @param {string} en
 * @return {unknown}
 */
const de = (en: string): unknown => {
	if (!en) throw new Error('en参数不能为空')

	try {
		const decrypt = CryptoJS.AES.decrypt(en, secretKey.crypot.key, {
			iv: secretKey.crypot.iv,
			mode: CryptoJS.mode.CBC,
			padding: CryptoJS.pad.Pkcs7
		})
		const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
		return JSON.parse(decryptedStr.toString())
	} catch (error: any) {
		console.log('en参数不能为空')
		throw new Error(error)
	}
}
  • 例子:
const str = this.$mk.utils.crypto.en({
    name: 'mankeung'
})

const newStr = this.$mk.utils.crypto.de(str)
console.log(newStr)