先引入:
npm install crypto-js
utils 包底下创建一个 des.js 文件,复制进去就行
// utils/des.js // des 加密文件 import cryptoJs from "crypto-js"; // 随机生成指定数量的16进制key(该方法非必须,也可自己指定key) const generatekey = num => { let library = "hA630BPv+4lNzf6daueS1Q=="; //24 let key = ""; // num 是 generatekey 传进来的参数 for (var i = 0; i < num; i++) { let randomPoz = Math.floor(Math.random() * library.length); key += library.substring(randomPoz, randomPoz + 1); } return key; }; /* * message:需要加密的字符串, * key: 密钥(加密解密密钥同一个) */ //DES加密 const encryptDes = (message, key = "Xy20221020") => { var keyHex = cryptoJs.enc.Utf8.parse(key); var option = { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.Pkcs7 }; var encrypted = cryptoJs.DES.encrypt(message, keyHex, option); // return encrypted.ciphertext.toString(); // 返回hex格式密文 return encrypted.toString(); // 如需返回base64格式:encrypted.toString()
}; //DES解密 const decryptDes = (message, key = "Xy20221020") => { var keyHex = cryptoJs.enc.Utf8.parse(key); var decrypted = cryptoJs.DES.decrypt( // { // ciphertext: cryptoJs.enc.Hex.parse(message) // }, // 若 message 是 base64 格式,则无需转16进制hex,直接传入 message 即可 message, keyHex, { mode: cryptoJs.mode.ECB, padding: cryptoJs.pad.Pkcs7 } ); return decrypted.toString(cryptoJs.enc.Utf8); }; export { generatekey, encryptDes, decryptDes };
vue 文件应用
const key = generatekey(8); // 也可直接指定key let key = 'des';
//如果是对象/数组的话,需要先JSON.stringify转换成字符串
const encrypts = encryptDes(JSON.stringify(this.loginForm.loginPwd), key); //加密 //如果是对象/数组的话,需要先JSON.stringify转换成字符串
//const encrypts = encryptDes(this.loginPwd, key); //加密 //如果是单个字段的话直接通过this去指向就行
const dess = JSON.parse(decryptDes(encrypts, key)); //解密
console.log(encrypts, dess);
或者另外一种简单的方法,同样先引入
var CryptoJS = require("crypto-js");
const secretKey = "Xy20221020"; //这里的key要和后端解密的key相同
var afterEncrypt = CryptoJS.DES.encrypt(
this.loginForm.loginPwd,
CryptoJS.enc.Utf8.parse(secretKey),
{
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
}
).toString(); //base64模式
this.login.password = afterEncrypt.ciphertext.toString(); //hex 模式
本文暂时没有评论,来添加一个吧(●'◡'●)