import CryptoJS from 'crypto-js';

const keyword = 'eas-key-password';

/**
 * 加密数据
 * @param data - 数据
 */
export function encryption(data: any) {
  const time = Date.now();
  // 转码
  const wordStr = CryptoJS.enc.Utf8.parse(String(time) + data);
  const key = CryptoJS.enc.Utf8.parse(keyword);
  const cryptoStr = CryptoJS.AES.encrypt(wordStr, key, {
    mode: CryptoJS.mode.ECB, // 模式
    padding: CryptoJS.pad.Pkcs7 // 补零
  });
  return cryptoStr.toString();
}

/**
 * 解密数据
 * @param cipherText - 密文
 */
export function decryption(cipherText: string) {
  const key = CryptoJS.enc.Utf8.parse(keyword);
  // 解密
  const cryptoStr = CryptoJS.AES.decrypt(cipherText, key, {
    mode: CryptoJS.mode.ECB, // 模式
    padding: CryptoJS.pad.Pkcs7 // 补零
  });
  return CryptoJS.enc.Utf8.stringify(cryptoStr).toString();
}

/**
 * 加密数据
 * @param data - 数据
 */
export function encryptJson(data: any) {
  const newData = JSON.stringify(data);
  return CryptoJS.AES.encrypt(newData, keyword).toString();
}

/**
 * 解密数据
 * @param cipherText - 密文
 */
export function decryptJson(cipherText: string) {
  const bytes = CryptoJS.AES.decrypt(cipherText, keyword);
  const originalText = bytes.toString(CryptoJS.enc.Utf8);
  if (originalText) {
    return JSON.parse(originalText);
  }
  return null;
}
