先引入:
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格式密文,如需返回base64格式:encrypted.toString() return 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);
标签:vue,const,des,解密,key,var,message,cryptoJs From: https://www.cnblogs.com/majiayin/p/16854456.html