有一个项目,需要解析一个用户提供的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); }
加密和解密都用这一个方法。也就是说参数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)); }
- 下一篇: 重大通报"微信哥哥打大a有挂吗"(太坑了确实有挂)
- 上一篇: 巴基斯坦西北部路边炸弹炸死两名士兵_2