• 用 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




  • 相关阅读:
    rocketMQ部署
    Redis Cluster集群搭建
    如何为nginx配置https(免费证书)
    台式机主机u盘安装centos7报错及注意事项
    docker运行模式图
    Mysql5.7版本安装
    Jumpserver安装过程
    macos系统安装mysql
    macos系统安装nginx
    一些小知识总结(虽然可能没用)
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212292.html
Copyright © 2020-2023  润新知