搜档网
当前位置:搜档网 › RC4 objective-c和C#加解密结合

RC4 objective-c和C#加解密结合

//c#
using System;
using System.Collections.Generic;
using System.Web;

///


/// 数据加密 的摘要说明
///

public class EncryptClass
{
///
/// 加密解密方法
///

/// 待处理string
/// 密钥
/// 密文
public static string Rc4EncryptMethod(string DataString, string EncodeKeyString)
{
int[] intArray = new int[256];
char[] charArray = new char[256];
int int_j = 0;
int int_i = 0;

for (int i = 0; i < 256; i++)
{
intArray[i] = i;
}
int_j = 1;
for (short i = 0; i < 256; i++)
{
char c = EncodeKeyString.ToCharArray()[i % EncodeKeyString.Length];
charArray[i] = c;
}
int_j = 0;
for (int i = 0; i < 255; i++)
{
int _int_a = intArray[i];
char _char_a = charArray[i];
int_j = (int_j + _int_a + _char_a) % 256;

int _int_tmp = intArray[i];
intArray[i] = intArray[int_j];
intArray[int_j] = _int_tmp;
}
int_j = 0;
int_i = 0;
string value = DataString;

for (short x = 0; x < DataString.Length; x++)
{
int_i = (int_i + 1) % 256;
int _int_is = intArray[int_i];
int_j = (int_j + _int_is) % 256;

int _int_is_i = intArray[int_i];
int _int_is_j = intArray[int_j];

int _int_t = (_int_is_i + _int_is_j) % 256;
int _int_iY = intArray[_int_t];

char _char_c = DataString.ToCharArray()[x];
char _char_y = (char)(_char_c ^ _int_iY);


char[] _char_list = value.ToCharArray();
_char_list[x] = _char_y;
String _str = System.Text.Encoding.Unicode.GetString(System.Text.Encoding.Unicode.GetBytes(_char_list));
value = _str;
}
return value;
}
}
/*//objective-c
-(NSString*)HloveyRC4:(NSString*)aInput key:(NSString*)aKey
{
NSMutableArray *iS = [[NSMutableArray alloc] initWithCapacity:256];
NSMutableArray *iK = [[NSMutableArray alloc] initWithCapacity:256];
for (int i= 0; i<256; i++) {
[iS addObject:[NSNumber numberWithInt:i]];
}
int j=1;
for (short i=0; i<256; i++) {
UniChar c = [aKey characterAtIndex:i%aKey.length];
[iK addObject:[NSNumber numberWithChar:c]];
}
j=0;
for (int i=0; i<255; i++) {
int is = [[iS objectAtIndex:i] intValue];
UniChar ik = (UniChar)[[iK objectAtIndex:i] charValue];
j = (j + is + ik)%256;
NSNumber *temp = [iS objectAtIndex:i];
[iS repla

ceObjectAtIndex:i withObject:[iS objectAtIndex:j]];
[iS replaceObjectAtIndex:j withObject:temp];
}
int i=0;
j=0;
NSString *result = aInput;
for (short x=0; x<[aInput length]; x++) {
i = (i+1)%256;
int is = [[iS objectAtIndex:i] intValue];
j = (j+is)%256;
int is_i = [[iS objectAtIndex:i] intValue];
int is_j = [[iS objectAtIndex:j] intValue];
int t = (is_i+is_j) % 256;
int iY = [[iS objectAtIndex:t] intValue];
UniChar ch = (UniChar)[aInput characterAtIndex:x];
UniChar ch_y = ch^iY;
result = [result stringByReplacingCharactersInRange:NSMakeRange(x, 1) withString:[NSString stringWithCharacters:&ch_y length:1]];
}
[iS release];
[iK release];
return result;
}*/

相关主题