zoukankan      html  css  js  c++  java
  • 用 Java 实现的 Rc4 加密算法

    转载自: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); 
                    
        }
    加密和解密都用这一个方法。也就是说参数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));  
    	} 



  • 相关阅读:
    手机端调用摄像头拍照
    判断浏览器是否支持css3属性或单位
    浏览器页面加载解析渲染机制(一)
    css默认值汇总
    分享几个高效编写JS 的心得
    说几个JS优化技巧吧
    yahoo的30条优化规则
    Jquery的$命名冲突
    C语言时间头文件
    C语言随机数的生成
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212291.html
Copyright © 2011-2022 走看看