本文实例讲述了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程序设计有所帮助。