package com.ahtv.application;import android.util.Base64;
import java.io.PrintStream;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;public class CryptAES
{
  public static String jmkey = "VatC3b0zAqpLmAkE";
  
  public static String decrypt(String paramString1, String paramString2)
  {
    try
    {
      SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramString2.getBytes(), "AES");
      Cipher localCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
      localCipher.init(2, localSecretKeySpec);
      byte[] arrayOfByte2 = localCipher.doFinal(Base64.decode(paramString1, 0));
      arrayOfByte1 = arrayOfByte2;
    }
    catch (Exception localException)
    {
      for (;;)
      {
        System.out.println(localException.toString());
        byte[] arrayOfByte1 = null;
      }
    }
    return new String(arrayOfByte1);
  }
  
  public static String encrypt(String paramString1, String paramString2)
  {
    try
    {
      SecretKeySpec localSecretKeySpec = new SecretKeySpec(paramString2.getBytes(), "AES");
      Cipher localCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
      localCipher.init(1, localSecretKeySpec);
      byte[] arrayOfByte2 = localCipher.doFinal(paramString1.getBytes());
      arrayOfByte1 = arrayOfByte2;
    }
    catch (Exception localException)
    {
      for (;;)
      {
        System.out.println(localException.toString());
        byte[] arrayOfByte1 = null;
      }
    }
    return new String(Base64.encodeToString(arrayOfByte1, 0));
  }
  
  public static String getKey()
  {
    if ((jmkey != null) || (!"".equals(jmkey)))
    {
      char[] arrayOfChar1 = jmkey.toCharArray();
      char[] arrayOfChar2 = new char[jmkey.length()];
      for (int i = 0; i < arrayOfChar1.length; i++) {
        arrayOfChar2[i] = arrayOfChar1[(-1 + arrayOfChar1.length - i)];
      }
      return new String(arrayOfChar2);
    }
    return "EkAmLpqAz0b3CtaV";
  }
  
  public static void main(String[] paramArrayOfString)
  {
    System.out.println(getKey());
  }
}

解决方案 »

  1.   

    decrypt 和 encrypt 这2个方法没有地方调用。
    只有getKey方法被调用。
    jmkey 初始值 VatC3b0zAqpLmAkE 非空。
     arrayOfChar2[i] = arrayOfChar1[(-1 + arrayOfChar1.length - i)];  //是逆序获取另一个数组值。最终结果是 VatC3b0zAqpLmAkE 逆序,和else分支一样的结果。最终打印 EkAmLpqAz0b3CtaV 
      

  2.   

    package com.ahtv.application;import java.io.PrintStream;public class Link
    {
      public static String a = "397666704";
      
      public static String getRealUrl(String paramString)
      {
        try
        {
          String str2 = CryptAES.decrypt(paramString, CryptAES.getKey());
          return str2;
        }
        catch (Exception localException1)
        {
          try
          {
            String str1 = CryptAES.decrypt(paramString, CryptAES.getKey());
            return str1;
          }
          catch (Exception localException2) {}
        }
        return paramString;
      }
      
      public static String loginValid(String paramString)
      {
        if (a.equals("397666704")) {
          return paramString;
        }
        return "";
      }
      
      public String doSomething(String paramString)
      {
        String str1 = "";
        String str2 = "";
        String str3 = "";
        String str4 = "";
        String[] arrayOfString = paramString.split("&link=");
        if (arrayOfString.length == 2)
        {
          str1 = arrayOfString[1];
          str2 = arrayOfString[0];
        }
        if ((!"".equals(str1)) && (str1.endsWith("tv"))) {
          str3 = NetUtils.get("" + str1);
        }
        System.out.println(str3);
        if ((!"".equals(str3)) && (str3.substring(1).startsWith("http://"))) {
          str4 = NetUtils.get(str3.substring(1));
        }
        if ("".equals(str4)) {
          return paramString;
        }
        return str2 + "&link=" + str4;
      }
      
      public String getLink(String paramString)
      {
        String str1 = "";
        String str2 = "";
        String str3 = "";
        String str4 = "";
        String[] arrayOfString = paramString.split("&link=");
        if (arrayOfString.length == 2)
        {
          str1 = arrayOfString[1];
          str2 = arrayOfString[0];
        }
        if ((!"".equals(str1)) && (str1.endsWith("tv"))) {
          str4 = NetUtils.get("" + str1);
        }
        if (!"".equals(str4)) {
          str3 = str4.substring(4);
        }
        System.out.println("jmlink=" + str3);
        if ("".equals(str3)) {
          return paramString;
        }
        String str5 = CryptAES.decrypt(str3, CryptAES.getKey());
        System.out.println("reallink=" + str5);
        return str2 + "&link=" + str5;
      }
    }
      

  3.   

    你加上这些代码,main方法里也没有调用,也没有静态块代码执行,所以不影响结果,
    所以getKey的结果还是和原来一样 EkAmLpqAz0b3CtaV