import crypto from "crypto-js";
//解密

const decryptAesEcb = (sSrc, sKey) => {
    try {
      if (!sKey) {
        console.error("Key为空null");
        return null;
      }
  
      // 1. 将密钥转为 WordArray（crypto 内部格式）
      const key = crypto.enc.Utf8.parse(sKey);
  
      // 2. Base64 解码密文，得到 WordArray
      const encryptedBytes = crypto.enc.Base64.parse(sSrc);
  
      // 3. 使用 AES/ECB/PKCS7 解密
      const decrypted = crypto.AES.decrypt(
        { ciphertext: encryptedBytes }, // 加密数据
        key, // 密钥
        {
          mode: crypto.mode.ECB, // ECB 模式
          padding: crypto.pad.Pkcs7, // PKCS7（等同于 Java 的 PKCS5Padding）
        }
      );
  
      // 4. 将解密结果转为 UTF-8 字符串
      const decryptedText = decrypted.toString(crypto.enc.Utf8);
  
      return decryptedText; // 如果解密失败，可能返回空字符串或非法字符
    } catch (error) {
      console.error("解密失败:", error);
      return null;
    }
  };
  //加密
  const encryptAesEcb = (sSrc, sKey) => {
    try {
      if (!sKey) {
        console.error("Key为空null");
        return null;
      }
  
      // 1. 将密钥转为 WordArray（crypto 内部格式）
      const key = crypto.enc.Utf8.parse(sKey);
  
      // 2. 将明文转为 WordArray
      const srcBytes = crypto.enc.Utf8.parse(sSrc);
  
      // 3. 使用 AES/ECB/PKCS7 加密
      const encrypted = crypto.AES.encrypt(
        srcBytes, // 明文数据
        key, // 密钥
        {
          mode: crypto.mode.ECB, // ECB 模式
          padding: crypto.pad.Pkcs7, // PKCS7 填充
        }
      );
  
      // 4. 将加密结果转为 Base64 字符串
      // crypto-js 的 encrypt 方法返回的对象中，ciphertext 是 WordArray 格式
      const encryptedBase64 = encrypted.ciphertext.toString(crypto.enc.Base64);
  
      return encryptedBase64;
    } catch (error) {
      console.error("加密失败:", error);
      return null;
    }
  };
  export { decryptAesEcb, encryptAesEcb };