//encrypt.js
/**
 * 通过crypto-js实现 加解密工具
 * AES
 * @author: wmz
 */
import CryptoJS from 'crypto-js'
const KP = {
  key: 'AJDBW8D2zdDq3b5U', // 秘钥 16*n:
  iv: '' // 偏移量
}
function getAesString(data, key, iv) {
  // 加密
  key = CryptoJS.enc.Utf8.parse(key)
  iv = CryptoJS.enc.Utf8.parse(iv)
  let encrypted = CryptoJS.AES.encrypt(data, key, {
    // iv: iv,
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  })
  return encrypted.toString() // 返回的是base64格式的密文
}
function getDAesString(encrypted, key, iv) {
  // 解密
  key = CryptoJS.enc.Utf8.parse(key)
  iv = CryptoJS.enc.Utf8.parse(iv)
  let decrypted = CryptoJS.AES.decrypt(encrypted, key, {
    // iv: iv,
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  })
  return decrypted.toString(CryptoJS.enc.Utf8) //
}
// AES 对称秘钥加密
const aes = {
  en: data => getAesString(data, KP.key, KP.iv),
  de: data => getDAesString(data, KP.key, KP.iv)
}
// BASE64
const base64 = {
  en: data => CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(data)),
  de: data => CryptoJS.enc.Base64.parse(data).toString(CryptoJS.enc.Utf8)
}
// SHA256
const sha256 = data => {
  return CryptoJS.SHA256(data).toString()
}
// MD5
const md5 = data => {
  return CryptoJS.MD5(data).toString()
}
export { aes, md5, sha256, base64 }
