DES加解密(附带解决转义问题)-VUE

定义全局方法

复制代码
main.js

import DESKeys from "./utils/key";
import CryptoJS from "crypto-js";    // npm install crypto-js@4.2.0  

/**
 * 配置全局的加密方法(DES)
 * 参数 plaintext 需要加密的字符串
 */
Vue.prototype.$encruptionDes = function (plaintext) {
  //进行加密
  let DesKey = DESKeys;
  let key = CryptoJS.enc.Utf8.parse(DesKey);
  let encrypted = CryptoJS.DES.encrypt(plaintext, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7,
  });

  return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
};

/**
 * 配置全局的解密方法(DES)
 * 参数 ciphertext 需要解密的密文(Base64编码)
 */
Vue.prototype.$decryptionDes = function (ciphertext) {
  let DesKey = DESKeys;
  let key = CryptoJS.enc.Utf8.parse(DesKey);
  let encryptedWordArray = CryptoJS.enc.Base64.parse(ciphertext);
  let cipherParams = CryptoJS.lib.CipherParams.create({
    ciphertext: encryptedWordArray
  });
  let decrypted = CryptoJS.DES.decrypt(cipherParams, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7,
  });
  return decrypted.toString(CryptoJS.enc.Utf8);
};

// 定义反转义函数
Vue.prototype.$htmlUnescape = function(str) {
  if (!str) return '';
  const div = document.createElement('div');
  div.innerHTML = str;
  const result = div.textContent || div.innerText || '';
  div.remove(); 
  return result;
};

utils/key.js

let ab = 'CAE';
let bc = 'q2n';
let cd = 'qno';
let de = 'tM=';
let DesKeys = ab + bc + cd + de;

export default DesKeys;

使用方法

复制代码
存取之前进行编码
存:encodeURIComponent(this.bindPassword)
取:let userPassword = decodeURIComponent(this.$decryptionDes(userPassword));

console.log('返回值Des解密解决转义', this.$htmlUnescape(userAccount), 
相关推荐
HjhIron4 小时前
从零实现一个待办事项应用:前端必学的Ajax与Node.js实战
前端·后端
yingyima4 小时前
JavaScript 正则表达式:从零开始的实战对比
前端
Cloud_Shy6184 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第六章 Item 40 - 43)
android·开发语言·人工智能·笔记·python·学习方法
Sammyyyyy4 小时前
月之暗面 Kimi Code 0.4.0 发布,终端 AI 编码助手全面采用 TypeScript,实现毫秒级启动
前端·javascript·人工智能·ai·typescript·servbay
范什么特西4 小时前
配置文件xml和properties
xml·前端
半只小闲鱼4 小时前
配置计划模块通用办公设备家具批复数合计计算
开发语言·python
jnene4 小时前
html 时间、价格筛选样式处理
前端·css·html
qq_422152574 小时前
Word 文件太大怎么压缩?2026 年文档瘦身方案对比
开发语言·c#·word
charliedev4 小时前
Jedi:Python 自动补全与静态分析的实用工具
开发语言·python·其他
slongzhang_4 小时前
jquery 修复怪异模式html未声明“<!DOCTYPE html>”
前端·html·jquery