AES加密vue 实际应用
程序员文章站
2022-06-15 17:46:40
...
需求:登录页面需要做登录密码加密
首先需要后端确定和提供如下内容
AEC 加密模式常用有CBC / ECB 下面分别对此做下说明
1、安装:npm install crypto-js --save
2、引入: import CryptoJs from ‘crypto-js’;
3、使用
ECB/CBC模式
// 使用,调用方法
let password = 'aa123456' // 需要加密的数据
let crypted = this.encryptByAES(password) // 调用加密方法
console.log('base64密文:', crypted) // base64密文:
let decrypt = this.decryptByAES(crypted) //调用解密方法
console.log('解密后的数据:', decrypt) // 解密后的数据: aa123456
vm.submitLogin(crypted);//把加密后的密码传给后台调登录接口
//在methods: {}里面写方法
// An highlighted block
// 加密,调用该方法时,传入的data必须是字符串类型,
// 故,如果要加密对象等类型,需要先用JSON.stringify()将其字符串化再传入
encryptByAES (data) {
let keyStr = 'Kw9d$wx[NNL^$9qd' // 16位,**字符串
let iva = 'FRJ9op4MKgTvfBEA';
let key = CryptoJs.enc.Utf8.parse(keyStr); // 将字符串的转为WordArray类型
let mydata = CryptoJs.enc.Utf8.parse(data);
let iv = CryptoJs.enc.Utf8.parse(iva);
//加密模式为CBC,补码方式为PKCS5Padding(也就是PKCS7)
let udata = CryptoJs.AES.encrypt(mydata, key, {
iv: iv,//如果用ECB,指定**偏移量iv去掉即可
mode: CryptoJs.mode.CBC, // 加密模式,CBC模式;
padding: CryptoJs.pad.Pkcs7 // 填充方式
})
let encrypted = udata.toString()// 返回的是base64的密文,是字符串类型
return encrypted
},
// 解密, 调用该方法时,传入的data是base64的密文
decryptByAES (data) {
let keyStr = 'Kw9d$wx[NNL^$9qd'
let iva = 'FRJ9op4MKgTvfBEA';
let key = CryptoJs.enc.Utf8.parse(keyStr);
let iv = CryptoJs.enc.Utf8.parse(iva);
let udata = CryptoJs.AES.decrypt(data, key, {
iv: iv,
mode: CryptoJs.mode.CBC,
padding: CryptoJs.pad.Pkcs7
})
// 返回的是加密之前的原始数据,是字符串类型
let decrypted = udata.toString(CryptoJs.enc.Utf8)
return decrypted
}