import CryptoJS from 'crypto-js';

const setting = {
  encPassword: 'emhpcnVpemh3eQ=='  // 数据传输的密钥
};

/**
 * AES 加密
 * @param {*} src 明文
 * @returns 密文
 */
export function aesEncrypt(src: string) {
  const key = CryptoJS.enc.Utf8.parse(setting.encPassword);
  // 加密
  var encrypted = CryptoJS.AES.encrypt(src, key, {
    iv: key,
    mode: CryptoJS.mode.CFB,
    padding: CryptoJS.pad.NoPadding
  });
  return encodeURIComponent(encrypted.toString()); // URL 编码
}

/**
 * AES 解密
 * @param {*} result 密文
 * @param {*} keyWord 密钥
 * @returns 明文
 */
export function aesDecrypt(result: any) {
  const key = CryptoJS.enc.Latin1.parse(setting.encPassword);
  var iv = key;
  // 解密逻辑
  var decryptd = CryptoJS.AES.decrypt(decodeURIComponent(result), key, { // URL 解码
    iv: iv,
    mode: CryptoJS.mode.CFB,
    padding: CryptoJS.pad.NoPadding
  });

  return decryptd.toString(CryptoJS.enc.Utf8);
}

/**
 * Base64 加密
 * @param {*} src 明文
 * @returns 密文
 */
export function base64Encrypt(src: string) {
  const encodedWord = CryptoJS.enc.Utf8.parse(src);
  return CryptoJS.enc.Base64.stringify(encodedWord);
}
