博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS RC4加解密算法
阅读量:5757 次
发布时间:2019-06-18

本文共 1272 字,大约阅读时间需要 4 分钟。

-(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];

}

 

转载于:https://www.cnblogs.com/vfeng/p/5125146.html

你可能感兴趣的文章
Windows Phone 7 中各种Task解说(启动器与选择器)
查看>>
罗森伯格助力2011年中国智能建筑技术发展应用论坛哈尔滨站
查看>>
网络割接
查看>>
windows server 2016 活动目录(二)
查看>>
openstack G版 修改vm的flavor级别
查看>>
python_控制台输出带颜色的文字方法
查看>>
java泛型中特殊符号的含义
查看>>
一秒 解决 ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql 问题
查看>>
Android组件化最佳实践 ARetrofit原理
查看>>
舍弃浮躁, 50条重要的C++学习建议
查看>>
同步手绘板——将View的内容映射成Bitmap转图片导出
查看>>
【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!...
查看>>
微信小程序之wx.navigateback往回携带参数
查看>>
陌陌和请吃饭之类的应用,你要是能玩转,那就厉害了
查看>>
递归的运行机制简单理解
查看>>
汉字转阿斯克马值
查看>>
Java 栈与堆简介
查看>>
【supervisord】部署单进程服务的利器
查看>>
zabbix oracle监控插件orabbix部署安装
查看>>
python3 通过qq 服务器 发送邮件
查看>>