import { sm4 } from 'sm-crypto';

const pwdKey = '86C63180C1306ABC4D8F989E0A0BC9F3'; // 32位十六进制密钥，与移动端一致

/**
 * 加密文本
 * @param text 待加密文本
 */
export function encrypt(text: any): string {
  if (typeof text !== 'string') {
    text = JSON.stringify(text);
  }
  return sm4.encrypt(text, pwdKey, {
    output: 'string',
    padding: 'pkcs#5',
  });
}

/**
 * 解密密文
 * @param text 待解密密文
 */
export function decrypt(text: string): any {
  try {
    const decrypted = sm4.decrypt(text, pwdKey, {
      output: 'string',
      padding: 'pkcs#5',
    });

    // 尝试解析为JSON，如果不是JSON则直接返回字符串
    try {
      return JSON.parse(decrypted);
    } catch {
      return decrypted;
    }
  } catch (error) {
    console.error('SM4解密失败:', error);
    return text; // 解密失败返回原文本
  }
}

/**
 * 判断是否需要加密处理
 */
export function needEncrypt(options: any): boolean {
  return options?.isEncrypt === true;
}
