iOS RC4加解密算法

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

}

时间: 2024-10-10 09:13:21

iOS RC4加解密算法的相关文章

[掌眼]iOS / Android / java / node.js 通用的 AES256 加解密算法

example.m NSString *text = @"text"; NSString *key32 = @"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding]; NSString *encryptedData = [[data AES256EncryptWithKey:key32] base64EncodedStringWi

加解密算法

加解密算法概述 工作中经常用到加解密算法大概有以下三种: 单项散列算法 对称散列算法 非对称散列算法 单项散列算法 由不定长的数据转化为固定长的字符串,代表有: sha1 sha1($str[,raw_out=false]);//算法不够复杂 raw_out默认为false,生成一个32位的加密串 如果为true,则生成一个16位的二进制流 md5 md5($str[,strict=false]) strict默认为false,生成一个32位的加密串 如果为true,则生成一个16位的二进制流

RC4加密解密算法

RC4相对是速度快.安全性高的加密算法.在实际应用中,我们可以对安全系数要求高的文本进行多重加密,这样破解就有一定困难了.如下测试给出了先用RC4加密,然后再次用BASE64编码,这样双重锁定,保证数据信息安全(个人见解,不周之处请谅解!). package com.bao.tools.encryption; import java.io.Console;import java.io.IOException;import java.util.Scanner; import org.junit.T

DES加解密算法Qt实现

算法解密qt加密table64bit [声明] (1) 本文源码 大部分源码来自:DES算法代码.在此基础上,利用Qt编程进行了改写,实现了DES加解密算法,并添加了文件加解密功能.在此对署名为bengold1979的网友表示感谢!本文是对DES算法代码一文代码的具体描述.该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 图片及部分解析来自 http://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E5%8A%A0%E5%AF%86%E6%A8%9

【转】各种加解密算法比较

转自: http://blog.csdn.net/pengzp/article/details/6556674 二.          加密算法介绍 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合. 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高. AES(Advanced Encryption Standard

AES加解密算法Qt实现

[声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外,图片及部分解析来自http://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86.图1为个人劳动成果,请勿盗用此图. [简介] AES(Advanced Encryption Standard,

python实现的Caesar加解密算法

Caesar算法是最简单的加解密算法... # Caeser Cipher import sys,os MyCypher = 25 MyDict = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz `[email protected]#$%^&*()_+[]\\;\',./{}|:"<>?' plaintext = 'Hello World!' cryptmsg = '' def encrypt(text, cyph

JavaScript与C#互通的DES加解密算法

原文地址:传送门 本文提供了一个能使JavaScript与C#互通的DES加解密算法的实现,在前台页面中用JavaScript版本的DES算法将数据加密之后,传到服务器端,在服务器端可用C#版本的DES解密算法将其解密,得到原始数据,以起到一定的保密作用.但基于算法本身和密钥保密程度方面的考虑,使用本算法加密后的数据,其保密程度不是很高,故请酌情使用. 声明:本文中的JavaScript版的DES加解密算法来自于互联网,但为了方便于转化成C#版本的代码,本人对其进行了细微调整. JavaScri

RC4加密解密算法原理与完整源代码实例演示

RC4加密算法 RC4加密算法是大名鼎鼎的RSA三人组中的头号人物Ron Rivest在1987年设计的密钥长度可变的流加密算法簇.之所以称其为簇,是由于其核心部分的S-box长度可为任意,但一般为256字节.该算法的速度可以达到DES加密的10倍左右,且具有很高级别的非线性.RC4起初是用于保护商业机密的.但是在1994年9月,它的算法被发布在互联网上,也就不再有什么商业机密了.RC4也被叫做ARC4(Alleged RC4——所谓的RC4),因为RSA从来就没有正式发布过这个算法. 原理 R