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

    参考链接:http://www.cocoachina.com/iphonedev/toolthain/2011/1010/3340.html

    Rc4.h

    #import <Foundation/Foundation.h>
    
    @interface Rc4 : NSObject
    
    +(NSString*)HloveyRC4:(NSString*)aInput key:(NSString*)aKey;
    
    @end

    Rc4.mm

    #import "Rc4.h"
    
    @implementation Rc4
    
    +(NSString*) HloveyRC4:(NSString*)aInput key:(NSString*)aKey {
        NSMutableArray *iS = [[NSMutableArray alloc] initWithCapacity:256];
        NSMutableArray *iK = [[NSMutableArray alloc] initWithCapacity:256];
        
        for (int i= 0; i<256; i++) {
            [iS addObject:[NSNumber numberWithInt:i]];
        }
        
        int j=1;
        
        for (short i=0; i<256; i++) {
            
            UniChar c = [aKey characterAtIndex:i%aKey.length];
            
            [iK addObject:[NSNumber numberWithChar:c]];
        }
        
        j=0;
        
        for (int i=0; i<255; i++) {
            int is = [[iS objectAtIndex:i] intValue];
            UniChar ik = (UniChar)[[iK objectAtIndex:i] charValue];
            
            j = (j + is + ik)%256;
            NSNumber *temp = [iS objectAtIndex:i];
            [iS replaceObjectAtIndex:i withObject:[iS objectAtIndex:j]];
            [iS replaceObjectAtIndex:j withObject:temp];
            
        }
        
        int i=0;
        j=0;
        
        NSString *result = aInput;
        
        for (short x=0; x<[aInput length]; x++) {
            i = (i+1)%256;
            
            int is = [[iS objectAtIndex:i] intValue];
            j = (j+is)%256;
            
            int is_i = [[iS objectAtIndex:i] intValue];
            int is_j = [[iS objectAtIndex:j] intValue]; 
            
            int t = (is_i+is_j) % 256;
            int iY = [[iS objectAtIndex:t] intValue];
            
            UniChar ch = (UniChar)[aInput characterAtIndex:x];
            UniChar ch_y = ch^iY;
            
            result = [result stringByReplacingCharactersInRange:NSMakeRange(x, 1) withString:[NSString stringWithCharacters:&ch_y length:1]];
        }
        
        [iS release];
        [iK release];
        
        return result;
    }
    
    @end




  • 相关阅读:
    c# 解决读取Excel混合文本类型,数据读取失败的解决方法
    c#中的常用ToString()方法总结
    vsts
    RSA加密解密
    odbc连接数据库
    SerialPort
    C# Winform下载文件并显示进度条
    c# 面试题
    SQL Server 存储过程
    mysql 事务处理
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212292.html
Copyright © 2011-2022 走看看