密碼學中的高級加密標準(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)
}