首页 > 移动平台 > 详细

iOS RC4加解密算法

时间:2016-01-12 18:07:39      阅读:251      评论:0      收藏:0      [点我收藏+]

技术分享

-(NSString *)encrypt:(NSString *)string withKey:(NSString *)key{

    self.sBox = [[self frameSBox:key] mutableCopy];

    unichar code[string.length];

    int i = 0;

    int j = 0;

    for (int n = 0; n < string.length; n++) {

        i = (i + 1) % SBOX_LENGTH;

        j = (j + [[self.sBox objectAtIndex:i]integerValue]) % SBOX_LENGTH;

        [self.sBox exchangeObjectAtIndex:i withObjectAtIndex:j];

        NSInteger index=([self.sBox[i] integerValue]+[self.sBox[j] integerValue]);

        NSInteger rand=([self.sBox[(index%SBOX_LENGTH)] integerValue]);

        code[n]=(rand  ^  (int)[string characterAtIndex:n]);

    }

    const unichar* buffer;

    buffer = code;

    return  [NSString stringWithCharacters:buffer length:string.length];

}

- (NSString*) decrypt:(NSString*)string withKey:(NSString*)key

{

    return [self encrypt:string withKey:key];

}

-(NSArray *)frameSBox:(NSString *)keyValue{

    NSMutableArray *sBox = [[NSMutableArray alloc] initWithCapacity:SBOX_LENGTH];

    int j = 0;

    for (int i = 0; i < SBOX_LENGTH; i++) {

        [sBox addObject:[NSNumber numberWithInteger:i]];

    }

    for (int i = 0; i < SBOX_LENGTH; i++) {

        j = (j + [sBox[i] integerValue] + [keyValue characterAtIndex:(i % keyValue.length)]) % SBOX_LENGTH;

        [sBox exchangeObjectAtIndex:i withObjectAtIndex:j];

    }

    return [NSArray arrayWithArray:sBox];

}

 

iOS RC4加解密算法

原文:http://www.cnblogs.com/vfeng/p/5125146.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!