前端对称加密
// 安装
npm install crypto-js
// utils新建一个js文件,内容如下
export default {
Word为需要加密的数据 keyStr为加密所需的秘钥 必须为16位的字符串
// 加密 encrypt (word, keyStr) {
if (!word) return
// 没有传递秘钥就使用默认的秘钥,秘钥的数量不能低于16位字符或者数字组成的
keyStr = keyStr || 'hanxiaojinggvage'
// 如果要加密的参数是对象类型,需要转换成字符串
if (typeof word === 'object') {
word = JSON.stringify(word)
}
// 字符串类型的秘钥或者参数必须先pase以下
const key = CryptoJS.enc.Utf8.parse(keyStr)
const srcs = CryptoJS.enc.Utf8.parse(word)
// 开始加密,第一个参数是要加密的参数,第二个参数是加密的秘钥,第三个参数是加密配置
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
// 由于CryptoJS生成的密文是一个对象,转为字符串才是后端需要的格式
return encrypted.toString()
},
// 解密 decrypt (word, keyStr) {
if (!word) return
keyStr = keyStr || 'hanxiaojinggvage'
const key = CryptoJS.enc.Utf8.parse(keyStr)
// 开始解密
const decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
// 如果是对象类型的参数,那么就转成对象,否则原样返回
try {
return JSON.parse(CryptoJS.enc.Utf8.stringify(decrypt).toString())
} catch (error) {
return CryptoJS.enc.Utf8.stringify(decrypt).toString()
}
}
}