密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。
话不多说上才艺!
一、在终端中输入安装命令:
npm install crypto-js --save-dev
二、在VUE目录的src文件夹中的common公用文件夹中添加文件AES.js,在文件中添加代码。
import CryptoJS from 'crypto-js';
export default {
//随机生成指定数量的16进制key
generatekey(num) {
let library = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let key = "";
for (var i = 0; i < num; i++) {
let randomPoz = Math.floor(Math.random() * library.length);
key += library.substring(randomPoz, randomPoz + 1);
}
return key;
},
//加密
encrypt(word, keyStr) {
keyStr = keyStr ? keyStr : 'abcmilanqwe12345'; //判断是否存在key,不存在就用定义好的16位的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();
},
//解密
decrypt(word, keyStr) {
keyStr = keyStr ? keyStr : 'abcdsxyzhkj12345';
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();
}
}
三、在需要的地方引入AES.js文件
import AES from "@/common/AES.js";
四、调用&测试
//控制台输出测试
var keys = AES.generatekey(16);
//如果是对象/数组的话,需要先JSON.stringify转换成字符串
var encrypts = AES.encrypt(JSON.stringify(cars),keys);
var dess = JSON.parse(AES.decrypt(encrypts,keys));
// var encrypts = that.$encrypt('1234asdasd',keys);
// var dess = that.$decrypt(encrypts,keys);
console.log(encrypts)
console.log(encrypts.length)
console.log(dess)
使用页面测试:
页面控件
<el-input placeholder="加密字符" v-model="encryptStr"></el-input>
<el-input placeholder="解密字符" v-model="decryptStr"></el-input>
<el-button id="encryptBtn" @click="encryptBtn">加密</el-button>
//点击的方法
encryptBtn:function(){
var that=this;
var mainKey=AES.generatekey(16);
//先加密显示,再解密输出
this.encryptStr=AES.encrypt(this.loginForm.uname,mainKey);
this.decryptStr=AES.decrypt(that.encryptStr,mainKey)
}