本文实例讲述了java实现的RC4加密解密算法。分享给大家供大家参考,具体如下:
有一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个Java 版本的RC4加解密算法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
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 可以传一个明文,也可以传一个加密后的字符串,程序会自动的识别。然后执行加解密的响应操作。
使用例子如下:
1
2
3
4
5
6
7
8
9
|
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));
}
|
希望本文所述对大家java程序设计有所帮助。