好像应该是这个,private static String a(String s)
{
    char ac[];
    int i;
    int j;
    ac = s.toCharArray();
    i = ac.length;
    j = 0;    while(j < i){
        switch (j % 5)
        {
        case 0:
            ac[j] ^= 70;
            break;
        case 1:
            ac[j] ^= 0x15;
            break;
        case 2:
            ac[j] ^= 107;
            break;
        case 3:
            ac[j] ^= 30;
            break;
        case 4:
            ac[j] ^= 44;
            break;
        }
        j++;
    }    return new String(ac);
}

解决方案 »

  1.   

    Java中好象己经取消了goto语句的吧,楼主写的是一个流程吧
      

  2.   

    呵呵,不是楼主写的,是楼猪反编译的
    请教crow_soup() 
            JVM INSTR ixor ;
            (char);
            JVM INSTR castore ;
    为什么翻译为ac[j] ^= 70;?
      

  3.   

    JVM INSTR ixor; 意思是调用 Java VM 的指令 ixor;
    Java 虚拟机是栈机,所有的操作都是在寄存器栈上进行的,
    ixor 定义的操作是将栈顶的两个操作数异或,然后将结果放在栈顶,使用前:                 使用后value 1 <-栈顶
    value 2                  result <-栈顶它在前面的switch 之的时候把一些及时数放到栈顶了,就是那些
    _L6:
            44;
            goto _L7
    啊什么的,
    在之前是把ac[j]放到栈顶了,
    然后它调用
    JVM INSTR ixor;
    就是 ^ 了,(如果我没有记错,^ 号是异或的意思),
    然后现在的结果栈顶就是他们异或以后的结果了
    然后它再调用
    castore 就存回数组 ac[j] 里面去了。
      

  4.   

    你说的没错,不过有一点你错了!就是顺序!private static String c(String s1)
        {
            char ac[];
            int i1;
            int j1;
            ac = s1.toCharArray();
            i1 = ac.length;
            j1 = 0;
              goto _L1
    _L9:
            ac;
            j1;
            JVM INSTR dup2 ;
            JVM INSTR caload ;
            j1 % 5;
            JVM INSTR tableswitch 0 3: default 76
        //                   0 52
        //                   1 58
        //                   2 64
        //                   3 70;
               goto _L2 _L3 _L4 _L5 _L6
    _L3:
            0x5e;
              goto _L7
    _L4:
            7;
              goto _L7
    _L5:
            70;
              goto _L7
    _L6:
            8;
              goto _L7
    _L2:
            15;
    _L7:
            JVM INSTR ixor ;
            (char);
            JVM INSTR castore ;
            j1++;
    _L1:
            if(j1 < i1) goto _L9; else goto _L8
    _L8:
            return new String(ac);
        }public static String a(String s)
    {
        char ac[];
        char key[] = new char[]{0x5e,7,70,8,15};
        int i;
        int j;
        ac = s.toCharArray();
        i = ac.length;    for(j=0;j<i;j++)
        {
         ac[j] ^= key[j%5];
        }    return new String(ac);
    }测试:be4638h(|/8f%m2-f({|;u/n/-n<m2s6x值为:<br><font face=sansserif size=-1>
    谢谢你啊!
      

  5.   

    啊,是顺序的啊,我被
    goto _L2 _L3 _L4 _L5 _L6这句骗了, :P
      

  6.   

    crow_soup() 接分 http://community.csdn.net/Expert/topic/3803/3803272.xml?temp=.8319666