maddy110989 maddy110989 - 4 years ago 389
C# Question

C# code to Objective C Equivalent Code

I am trying to convert code written in C# to objective c, I tried but unable to get the same result . Any help will be appreciable.

internal static class Common  {
static string encryptionKey = "0C61L2FSL2F3E7X8E9T1L2F3E4O5";
static byte[] salt = new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76};
 
internal static string Encrypt(string clearText)
{
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(encryptionKey, salt);

encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);

using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(clearBytes, 0, clearBytes.Length);
cs.Close();
}
clearText = Convert.ToBase64String(ms.ToArray());
}
}
return clearText;
}  
}


Above Code is used for encrytion. I tried to get the equivalent functions in objective for RFC2898derivebytes.

Objective c code that i tried :

-(void)doEncryption {

NSString *url = @"www.google.com";

const char salt[] = {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76};

NSData *saltData =[NSData dataWithBytes:salt length:13];

NSData* myPassData = [EncryptionKey dataUsingEncoding:NSUTF8StringEncoding];


unsigned char key[32];

CCKeyDerivationPBKDF(kCCPBKDF2, myPassData.bytes, myPassData.length, saltData.bytes, saltData.length, kCCPRFHmacAlgSHA1, 1000, key, 32);

unsigned char InitialVector[16];

CCKeyDerivationPBKDF(kCCPBKDF2, myPassData.bytes, myPassData.length, saltData.bytes, saltData.length, kCCPRFHmacAlgSHA1, 1000, InitialVector, 16);


NSString *Aeskey = [[NSString alloc] initWithBytes:key length:sizeof(key) encoding:NSUnicodeStringEncoding];
NSLog(@"Key AES : %@",Aeskey);



NSString *AesIV = [[NSString alloc] initWithBytes:InitialVector length:sizeof(key) encoding:NSASCIIStringEncoding];

NSString *encryptedString = [AESCrypt encrypt:url password:Aeskey andIV:AesIV];


[self doDecryption:encryptedString withKey:nil];
}

Answer Source

Hey if you want to try some encrytion and decrytion in both ios and C# then you can use code given on this link. It works for me. I found this link

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download