常用拷贝信息,深拷贝数据,加密,解密

import CryptoJS from "crypto-js";

const CRYPTOJSKEY = "zhouzhenrongqq12";

class PublicMethod {
  /**
   * 复制文本
   * @param text 复制的内容
   */
  static copy(text) {
    const oInput = document.createElement("input");
    oInput.value = text;
    document.body.appendChild(oInput);
    oInput.select(); // 选择对象
    document.execCommand("Copy"); // 执行浏览器复制命令
    oInput.className = "oInput";
    oInput.style.display = "none";
  }
  /***
   * 加密
   * @param plaintText 加密字符串
   * @returns {string}
   */
  static encrypt(plaintText) {
    const options = {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    };
    const key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY);
    const encryptedData = CryptoJS.AES.encrypt(plaintText, key, options);
    let encryptedBase64Str = encryptedData.toString().replace(/\//g, "_");
    encryptedBase64Str = encryptedBase64Str.replace(/\+/g, "-");
    return encryptedBase64Str;
  }

  /***
   * 解密
   * @param encryptedBase64Str 解密密字符串
   * @returns {string}
   */
  static decrypt(encryptedBase64Str) {
    if (!encryptedBase64Str) {
      return null;
    }
    const vals = encryptedBase64Str.replace(/\-/g, '+').replace(/_/g, '/');
    const options = {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    };
    const key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY);
    const decryptedData = CryptoJS.AES.decrypt(vals, key, options);
    return CryptoJS.enc.Utf8.stringify(decryptedData);
  }

  /**
   * 深拷贝
   * @param obj 深拷贝数据对象数组
   * @returns {[]}
   */
  static deepCopy(obj) {
    const result = Array.isArray(obj) ? [] : {};
    for (const key in obj) {
      if (obj.hasOwnProperty(key)) {
        if (typeof obj[key] === 'object' && obj[key] !== null) {
          result[key] = this.deepCopy(obj[key]);
        } else {
          result[key] = obj[key];
        }
      }
    }
    return result;
  }
}

export default PublicMethod;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值