VUE中的AES對稱加密應用(詳細)

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章