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

}

最新文章

  1. mono for android学习过程系列教程(2)
  2. Linux2 在Linux(CentOS)上配置SSH免登陆
  3. 1.0 UIApplication对象
  4. paramiko模块使用
  5. 泛型、Linq 查询使用
  6. SharePoint 错误集 3
  7. windows下Jdk和Tomcat的安装配置
  8. Mac之OS系统下搭建JavaEE环境 &lt;五&gt; 之Mysql数据库的安装及配置
  9. linux操作系统基础篇(九)
  10. href
  11. 变量类型、sprintf、不同类型之间的混合运算
  12. WPF ObservableCollection 异步调用问题
  13. centos7端口永久开放方法
  14. day-14带参装饰器、迭代器
  15. CF434D Nanami&#39;s Power Plant 最小割
  16. java 线程Thread 技术--1.5 Future与Callable
  17. css字体更小 css比12px更小的方法
  18. cocos2d-x 输出debug信息
  19. sql2008修改管理员与普通用户密码
  20. javascript保存excel

热门文章

  1. 【HDOJ】1150 Machine Schedule
  2. Node.js权威指南 (8) - 创建HTTP与HTTPS服务器及客户端
  3. POJ1218
  4. HDOJ(HDU) 2520 我是菜鸟,我怕谁(等差数列)
  5. HDU 3555 Bomb(数位DP)
  6. iOS中控件的Frame属性和Bounds属性的区别
  7. JavaScript高级程序设计3.pdf
  8. C#在ASP.NET4.5框架下的首次网页应用
  9. Oracle索引(B*tree与Bitmap)的学习总结
  10. 使用Topshelf创建Windows 服务