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

。_饼干妹妹 提交于 2019-12-21 11:56:46
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;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!