转载自:http://blog.csdn.net/a9529lty/article/details/4813393
有一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个java 版本的RC4加解密算法。
- 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);
- }
使用例子如下:
- 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));
- }