2016-05-25 75 views
-1

我正在開發一個項目,我必須與.net團隊協調。 我需要下面提到的目標-C中的AES加密算法(用C#編寫)的等效代碼。 我一直在使用AESCrypt和CommonCrypt但在這兩種語言它不是沃金well..getting不同的加密值試過..目標中的AES加密技術C

private string Encrypt(string clearText) 
{ 
    string EncryptionKey = "MAKV2SPBNI99212"; 
    byte[] clearBytes = Encoding.Unicode.GetBytes(clearText); 
    using (Aes encryptor = Aes.Create()) 
    { 
     Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 }); 
     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; 
} 

在advace

+1

我花了大約一個星期做同樣的事情對我公司。我不能發佈代碼,因爲它屬於他們,但你可以看看'RNCryptor'和'NSData + Base64'。雖然Base64部分目前內置於最新版本的蘋果語言中。 – Putz1103

+1

互聯網上有很多例子。我相信你會找到一個。另外,這與凱撒密碼有什麼關係? –

+0

請注意,'Rfc2898DeriveBytes'是msdn [Rfc2898DeriveBytes Class](https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes(v = vs.110))中所述的'PBKDF2'。 ASPX)。 Apple的Common Crypto提供'PBKDF2'。 – zaph

回答

0

請help..thanks在回答代替使用CCKeyDerivationPBKDF Rfc2898DeriveBytes:

使用Common Crypto的PBKDF2的簡單C示例。
應該注意將C++字符串轉換爲字節數組,通常在轉換中使用UTF-8。

const char passwordData[] = "password"; 
size_t  passwordLength = strlen(passwordData); 
uint8_t  salt[]   = {0x01, 0x02, 0x03, 0x04}; 
size_t  saltLength  = sizeof(salt); 
uint  rounds   = 1000; 
const int derivedKeySize = 16; 
uint8_t  derivedKey[derivedKeySize]; 

CCKeyDerivationPBKDF(kCCPBKDF2, 
        passwordData, passwordLength, 
        salt, saltLength, 
        kCCPRFHmacAlgSHA1, 
        rounds, 
        derivedKey, derivedKeySize); 

for (int i=0; i<derivedKeySize; i++) { 
    printf("%2x ", derivedKey[i]); 
} 
printf("%s", "\n"); 

輸出

31 96 42 56 3F 1408米B3 91 3E 85 FA 43 39 69 5E 93

+0

您好,先生,請您提供我在.net.I中使用的上述加密技術的代碼,我需要它的目標-C編碼。 使用CCKeyDerivationPBKDF我能夠加密密鑰部分,但我需要加密我的數據以及密鑰.. 我將如何做到這一點? –

+0

添加您嘗試過的問題。在SO上有幾個Objective-C例子,你只需要將它們調整到C++,這應該很容易,因爲Common Crypto是「C」。 – zaph