最近的vue项目有用到对密码进行加解密操作
MD5不可逆
网上看了一些别的算法,最后确认使用AES算法进行加解密
// 安装crypto-js
npm install crypto-js --save
创建CryptoJS.js文件封装加解密方法,内容如下
//封装加解密方法
import CryptoJS from "crypto-js";
export default {
// 加密
encrypt(word, keyStr) {
keyStr = keyStr ? keyStr : "xxxxxxxxxxxxxxxx";
let key = CryptoJS.enc.Utf8.parse(keyStr);
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
},
// 解密
decrypt(word, keyStr) {
keyStr = keyStr ? keyStr : "xxxxxxxxxxxxxxxx";
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();
}
};
第一个参数word是待加密或者解密的字符串;
第二个参数keyStr是aes加密需要用到的16位字符串的key,keyStr 的长度要不小于14位,否则解密时会显示空白----这个keyStr可自定义,由前端和后端共同约定好即可;
如果想对一个js对象加密,需要先把该对象转成json字符串
在需要的页面引入该js文件
import CryptoJS from '../assets/js/CryptoJS';
// 加密值根据keyStr的变化而变化
// 加密--888888
let oldEncryPwd = CryptoJS.encrypt(this.pwdForm.oldPwd); // Fof8zAtAP9OccD4qVBTU32==
// 解密
let dePwd = CryptoJS.decrypt('Fof8zAtAP9OccD4qVBTU3g=='); // 888888