content: package com.alphabugx.security;
  
  import java.nio.charset.StandardCharsets;
  import java.util.Base64;
  
  /**
   * 字符串加密工具类
   * 提供简单但有效的字符串混淆功能
   */
  public class StringEncryption {
      
      // 加密密钥（混淆存储）
      private static final int[] KEYS = {7, 13, 23, 31, 37}; // 质数序列
      private static final String SALT = "JawdSecure2024"; // 盐值
      
      /**
       * 加密字符串（多层加密）
       */
      public static String encrypt(String plaintext) {
          if (plaintext == null || plaintext.isEmpty()) {
              return plaintext;
          }
          
          try {
              // 第一层：简单位移加密
              String shifted = shiftEncrypt(plaintext, KEYS[0]);
              
              // 第二层：XOR加密
              String xored = xorEncrypt(shifted, SALT);
              
              // 第三层：Base64编码
              return Base64.getEncoder().encodeToString(xored.getBytes(StandardCharsets.UTF_8));
              
          } catch (Exception e) {
              return plaintext; // 加密失败时返回原文
          }
      }
      
      /**
       * 解密字符串
       */
      public static String decrypt(String encrypted) {
          if (encrypted == null || encrypted.isEmpty()) {
              return encrypted;
          }
          
          try {
              // 第三层：Base64解码
              String decoded = new String(Base64.getDecoder().decode(encrypted), StandardCharsets.UTF_8);
              
              // 第二层：XOR解密
              String xored = xorDecrypt(decoded, SALT);
              
              // 第一层：位移解密
              return shiftDecrypt(xored, KEYS[0]);
              
          } catch (Exception e) {
              return encrypted; // 解密失败时返回原文
          }
      }
      
      /**
       * 位移加密
       */
      private static String shiftEncrypt(String text, int shift) {
          StringBuilder result = new StringBuilder();
          for (char c : text.toCharArray()) {
              result.append((char) (c + shift));
          }
          return result.toString();
      }
      
      /**
       * 位移解密
       */
      private static String shiftDecrypt(String text, int shift) {
          StringBuilder result = new StringBuilder();
          for (char c : text.toCharArray()) {
              result.append((char) (c - shift));
          }
          return result.toString();
      }
      
      /**
       * XOR加密/解密
       */
      private static String xorEncrypt(String text, String key) {
          StringBuilder result = new StringBuilder();
          for (int i = 0; i < text.length(); i++) {
              char textChar = text.charAt(i);
              char keyChar = key.charAt(i % key.length());
              result.append((char) (textChar ^ keyChar));
          }
          return result.toString();
      }
      
      /**
       * XOR解密（与加密相同）
       */
      private static String xorDecrypt(String text, String key) {
          return xorEncrypt(text, key); // XOR的特性：加密和解密是同一个操作
      }
      
      /**
       * 预定义的加密常量
       */
      public static class EncryptedStrings {
          // CFR相关字符串
          public static final String CFR_JAR = encrypt("cfr-0.152.jar");
          public static final String JAVAC_EXE = encrypt("javac.exe");
          public static final String JAR_EXE = encrypt("jar.exe");
          
          // 错误信息
          public static final String COMPILATION_FAILED = encrypt("Java编译失败");
          public static final String DECOMPILATION_FAILED = encrypt("反编译失败");
          public static final String FILE_NOT_FOUND = encrypt("文件未找到");
          
          // 配置信息
          public static final String CONFIG_FILE = encrypt("jawd_config.properties");
          public static final String TEMP_DIR = encrypt("jawd_temp");
          public static final String BACKUP_DIR = encrypt("jawd_backup");
          
          // 系统信息
          public static final String JAVA_HOME = encrypt("JAVA_HOME");
          public static final String USER_DIR = encrypt("user.dir");
          public static final String TEMP_PATH = encrypt("java.io.tmpdir");
      }
      
      /**
       * 快速解密方法（用于获取预定义字符串）
       */
      public static String getCfrJar() {
          return decrypt(EncryptedStrings.CFR_JAR);
      }
      
      public static String getJavacExe() {
          return decrypt(EncryptedStrings.JAVAC_EXE);
      }
      
      public static String getJarExe() {
          return decrypt(EncryptedStrings.JAR_EXE);
      }
      
      public static String getConfigFile() {
          return decrypt(EncryptedStrings.CONFIG_FILE);
      }
      
      public static String getTempDir() {
          return decrypt(EncryptedStrings.TEMP_DIR);
      }
      
      /**
       * 生成加密版本的字符串（用于开发时生成加密常量）
       */
      public static void main(String[] args) {
          // 用于生成加密常量的工具方法
          System.out.println("CFR_JAR: " + encrypt("cfr-0.152.jar"));
          System.out.println("JAVAC_EXE: " + encrypt("javac.exe"));
          System.out.println("JAR_EXE: " + encrypt("jar.exe"));
          System.out.println("CONFIG_FILE: " + encrypt("jawd_config.properties"));
      }
  } 