这里用的AES的ECB模式,示例使用场景,登录
Vue(这里是定义的全局方法):
step1:安装
npm install crypto-js --save-dev
step2:
在main.js中引入,创建全局加密、解密方法
//引入
import CryptoJS from 'crypto-js';
//创建方法
//AES加密
Vue.prototype.$encrypt = function(word, keyStr) {
keyStr = keyStr ? keyStr : 'test123456789012'; //判断是否存在ksy,不存在就用定义好的key
var key = CryptoJS.enc.Utf8.parse(keyStr);
var srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return encrypted.toString();
}
//AES解密
Vue.prototype.$decrypt = function(word, keyStr) {
keyStr = keyStr ? keyStr : 'test123456789012';
var key = CryptoJS.enc.Utf8.parse(keyStr);
var decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
step3:使用
var password = this.$encrypt(this.password)//密码加密传输
doLogin({ username: this.username, password: password }).then(
res => {
if (res.data.code == 200) {
var res_json_str = this.$decrypt(res.data.data)//解密
var res_data = JSON.parse(res_json_str)
console.log("返回:"+res_data );
successAlert("登录成功");
} else {
errorAlert(res.data.msg);
}
}
);
PHP:
可见我前面的文章,PHP AES加密
tips:关于登录时密码为什么加密?使用加密后,这个地方就看不到密码啦
payload内容都是明文记录,除非记录的是加密数据,否则不排除泄露隐私数据的可能。所以不推荐在payload中记录任何敏感数据哈