iOS RC4加解密算法
来源:互联网 发布:系统化思维导论 知乎 编辑:程序博客网 时间:2024/04/28 20:53
-(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加解密算法
- RC4加解密算法
- RC4加解密算法
- RC4加解密
- java RC4加解密
- RC4 加解密
- LoadRunner RC4加解密
- cocos rc4加解密
- Linux下RC4算法的多线程加解密
- OpenSSL之RC4加解密
- RC4的加解密原理
- python版本rc4加解密
- PHP RC4 加解密类
- RC4加密解密java算法
- RC4加密解密java算法
- RC4加密解密java算法
- RC4加密解密算法123
- OpenSSL中RC4加解密过程调研
- 更新Xcode7 后 .dylib变成了.tbd的问题解决
- 本地代码上传 -> Github
- 无聊写一个自己接入微信支付的文章
- UIScrollView不能响应touch事件的解决办法
- Educational Codeforces Round 11——C. Hard Process(YY)
- iOS RC4加解密算法
- POJ——3061Subsequence(尺取法或二分查找)
- 公有PaaS的浴火重生
- LSU——1116Necklace(尺取)
- 揭开RecyclerView的神秘面纱(三):操作数据及添加分割线
- MySQL:日期函数、时间函数总结
- Unix环境高级编程(阅读笔记)----sigaction函数
- 解决横屏时调用系统相册崩溃的问题
- 周赛(POJ3252)——B.stars(树状数组)