程序员的资源宝库

网站首页 > gitee 正文

vue des 加密和解密(纯前端) vue 密码加密

sanyeah 2024-03-29 17:57:38 gitee 9 ℃ 0 评论

先引入:

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 模式
 

 

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表