public static String HloveyRC4(String aInput,String aKey){   
        int[] iS = new int[256];   
        byte[] iK = new byte[256];   

        for (int i=0;i<256;i++)   
            iS[i]=i;   

        int j = 1;   

        for (short i= 0;i<256;i++){   
            iK[i]=(byte)aKey.charAt((i % aKey.length()));   
        }   

        j=0;   

        for (int i=0;i<255;i++){   
            j=(j+iS[i]+iK[i]) % 256;   
            int temp = iS[i];   
            iS[i]=iS[j];   
            iS[j]=temp;   
        }   


        int i=0;   
        j=0;   
        char[] iInputChar = aInput.toCharArray();   
        char[] iOutputChar = new char[iInputChar.length];   
        for(short x = 0;x<iInputChar.length;x++)   
        {   
            i = (i+1) % 256;   
            j = (j+iS[i]) % 256;   
            int temp = iS[i];   
            iS[i]=iS[j];   
            iS[j]=temp;   
            int t = (iS[i]+(iS[j] % 256)) % 256;   
            int iY = iS[t];   
            char iCY = (char)iY;   
            iOutputChar[x] =(char)( iInputChar[x] ^ iCY) ;      
        }   

        return new String(iOutputChar);   

    }  

加密和解密都用这一个方法。也就是说参数String aInput 可以传一个明文,也可以传一个加密后的字符串,程序会自动的识别。然后执行加解密的响应操作。
使用例子如下:

public static void main(String[] args) {      
    String inputStr = "做个好男人";      
    String key = "abcdefg";         

    String str = HloveyRC4(inputStr,key);  

    //打印加密后的字符串      
    System.out.println(str);    

    //打印解密后的字符串      
    System.out.println(HloveyRC4(str,key));    
}   


本文转载:CSDN博客