import CryptoJS from 'crypto-js'
const keyStr = 'qwerasdfzxcvtyui'
export default {
  // 加密
  encrypt(word) {
    // 判断是否存在keyStr，不存在就用默认的keyStr（注意：这个keyStr必需要前后端统一，不然双方加密解密后会不相同。调用generatekey方法生成）
    // keyStr = keyStr ? keyStr : '1grLx91U40VawzhRAm7E'
    const key = CryptoJS.enc.Utf8.parse(keyStr)
    const srcs = CryptoJS.enc.Utf8.parse(word)
    const encrypted = CryptoJS.AES.encrypt(srcs, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    })
    return encrypted.toString()
  },
  // AES的ECB加密（还有CBC模式）
  encryptECB(word) {
    // 这里是密钥
    var keyHex = CryptoJS.enc.Utf8.parse(keyStr)
    // 这里是demo样本 一些是json，
    // var plaintText = "{'a':'SSS'}"
    // 一些是string
    var plaintText = word

    // 用ECB进行加密
    var encryptedData = CryptoJS.AES.encrypt(
      // JSON.stringify(plaintText),
      plaintText,
      keyHex,
      {
        // iv: CryptoJS.enc.Utf8.parse('0000000000000000'), // 16位
        mode: CryptoJS.mode.ECB, // 加密模式
        padding: CryptoJS.pad.Pkcs7
      })
    // 打印出加密后的
    // console.log(encryptedData.toString(), '加密后')
    return encryptedData.toString();
  },

  // 解密
  decrypt(word) {
    // 这里是密钥
    var keyHex = CryptoJS.enc.Utf8.parse(keyStr)
    // 这里需要将16进制的数据转为base64
    // var encryptedBase64Str = CryptoJS.enc.Hex.parse(word)
    // // console.log('解密前Base64：' + encryptedBase64Str)
    // var str = CryptoJS.enc.Base64.stringify(encryptedBase64Str)
    // console.log("str=",str)
    // 接下来就是解密了，讲最后Base64形式的进行解密
    var decryptedData = CryptoJS.AES.decrypt(
      word,
      keyHex,
      {
        // iv: CryptoJS.enc.Hex.parse('0000000000000000'), // 16位
        mode: CryptoJS.mode.ECB, // 加密模式
        padding: CryptoJS.pad.Pkcs7
      }
    )
    return CryptoJS.enc.Utf8.stringify(decryptedData).toString()
    // console.log("decryptedData=",decryptedData)
    // 这里会产生制表符需要清除掉(如果解密后数据少于16位会以空格补齐)
    // return decryptedData.toString(CryptoJS.enc.Utf8).replace(/\0/g, '')
  },


}
