rc4加解密

/*	
 * 
 * All rights reserved.
 *			 
 * Contributors:
 *    teng_srong - initial API and implementation
 * 
 */

package com.test.spell.rc4;

/**
 * 
 * 描述:<p>&nbsp;&nbsp;&nbsp;&nbsp;功能描述,该部分必须以中文句号结尾。</p>
 * 创建日期:2012-6-27 上午9:50:51<br>
 * @author:teng_srong<br> 
 * @update:$Date$<br>
 * @version:$Revision$<br>
 * @since 版本号,用来指定该类是从整个项目的哪个版本开始加入到项目中的
 */
public class Rc4Message {

	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);   
                  
    }  
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String inputStr = "我们的一个项目,需要解析一个用户提供的rc4加密后的文件,特意搜索整理了一个java 版本的RC4加解密算法";      
	    String key = "123456789"; 
	    
	    //打印加密前的字符串      
	    System.out.println("加密前:"+inputStr);  
	      
	    String str = HloveyRC4(inputStr,key);  
	      
	    //打印加密后的字符串      
	    System.out.println("加密后:" + str);    
	      
	    //打印解密后的字符串      
	    System.out.println("解密后:" + HloveyRC4(str,key));    
	}

}

猜你喜欢

转载自wendy1018.iteye.com/blog/1578390
今日推荐