/**
 * 工具类
 * AES加密
 * 特别注意：（1）AES加密中需要前后端共同协商一个密文(密钥),用来加密/解密的（2）偏移量。
 * yskj@!#$20230516 代表此次密文
 */
import CryptoJS from 'crypto-js'
// ECB模式
// 加密
export function encrypt (word: any, keyStr?: string) { // word, keyStr第一个参数是加密的字段名字  第二个是key值（16位）
  keyStr = keyStr || 'yskj@!#$20230516' // 密文（密钥）
  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()
}
// 解密
export function decrypt (word: any, keyStr?: string) {
  keyStr = keyStr || 'yskj@!#$20230516'
  const key = CryptoJS.enc.Utf8.parse(keyStr)// Latin1 w8m31+Yy/Nw6thPsMpO5fg==
  const decrypt = CryptoJS.AES.decrypt(word, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
  return CryptoJS.enc.Utf8.stringify(decrypt).toString()
}

// // CBC模式
//   // 特别注意：此次是将密文写死到函数内部，也可以当成函数的参数进行动态绑定密文,列如：
//   export function encrypt (word:any) {
//     const keyStr = 'yskj@!#$20230516' // 密钥

//     const ivStr = 'yskj@!#$20230516' // 偏移量

//     const key = CryptoJS.enc.Utf8.parse(keyStr)

//     const iv = CryptoJS.enc.Utf8.parse(ivStr)

//     const srcs = CryptoJS.enc.Utf8.parse(word)

//     const encrypted = CryptoJS.AES.encrypt(srcs, key, {

//       iv: iv,

//       mode: CryptoJS.mode.CBC,

//       padding: CryptoJS.pad.Pkcs7

//     })

//     return encrypted.toString()
//   },
//   // 解密
//   decrypt (word:any) {
//     const keyStr = 'yskj@!#$20230516'

//     const ivStr = 'yskj@!#$20230516'

//     const base64 = CryptoJS.enc.Utf8.parse(word)

//     const key = CryptoJS.enc.Utf8.parse(keyStr)

//     const iv = CryptoJS.enc.Utf8.parse(ivStr)

//     const src = CryptoJS.enc.Utf8.stringify(base64)

//     const decrypt = CryptoJS.AES.decrypt(src, key, {

//       iv,

//       mode: CryptoJS.mode.CBC,

//       padding: CryptoJS.pad.Pkcs7

//     })

//     return decrypt.toString(CryptoJS.enc.Utf8)
//   }
