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), 
相关推荐
广州华水科技2 小时前
2026年高口碑GNSS变形监测一体机推荐:提升水库安全解决方案
前端
sakiko_2 小时前
Swift报错合集(Xcode编译器)
开发语言·swiftui·xcode·swift·uikit
海盗12342 小时前
C#中使用MiniExcel 快速入门:读写 .xlsx 文件
开发语言·windows·c#
xiaoxue..2 小时前
讲讲 浏览器的缓存机制
前端·缓存·面试·浏览器
XMYX-02 小时前
29 - Go time 时间模块详解:时间处理、定时控制与底层设计
开发语言·golang
小小de风呀2 小时前
de风——【从零开始学C++】(七):string类详解
开发语言·c++·算法
丘比特惩罚陆2 小时前
制作类似aimlab的测试手速反应力的小游戏
开发语言·javascript·visual studio
江屿风2 小时前
【c++笔记】类和对象流食般投喂(中)
开发语言·c++·笔记
Data_Journal2 小时前
Node.js网络爬取指南——简单易上手!
大数据·linux·服务器·前端·javascript
csbysj20202 小时前
C 语言输入与输出(I/O)详解
开发语言