2014-05-19 28 views
2

我是xcode和Objective-C的新手。我編寫了一個QR掃描器,現在我需要解密用AES128 CBC加密的數據。我使用這段代碼在php中加密明文:http://www.androidsnippets.com/encrypt-decrypt-between-android-and-php解密來自PHP的Objective-C中的AES128/CBC

你能幫我嗎?對不起,我的英文不好,我是德國人:d

+0

**永遠**從AndroidSnippets信任加密代碼。他們發佈了最可怕的不安全代碼,因爲大量的Android開發者在他們的整個生活中都沒有看到過加密,所以他們得到了無限的關注和投票。這只是另一個例子。 –

+0

代碼中沒有重要的數據,但不是每個人都必須先看看它背後的內容。 – Devtronic

+0

好,解密失敗後再次與您交談。 –

回答

4

使用CommonCrypto,見CommonCryptoCCCryptor

這裏是一個SNIPPIT讓你開始:

+ (NSData *)doCipher:(NSData *)dataIn 
        iv:(NSData *)iv 
       key:(NSData *)symmetricKey 
      context:(CCOperation)encryptOrDecrypt 
       error:(NSError **)error 
{ 
    CCCryptorStatus ccStatus = kCCSuccess; 
    size_t   cryptBytes = 0; // Number of bytes moved to buffer. 
    NSMutableData *dataOut = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128]; 

    ccStatus = CCCrypt(encryptOrDecrypt, 
         kCCAlgorithmAES128, 
         kCCOptionPKCS7Padding, 
         symmetricKey.bytes, 
         kCCKeySizeAES128, 
         iv.bytes, 
         dataIn.bytes, 
         dataIn.length, 
         dataOut.mutableBytes, 
         dataOut.length, 
         &cryptBytes); 

    if (ccStatus == kCCSuccess) { 
     dataOut.length = cryptBytes; 
    } 
    else { 
     if (error) { 
      *error = [NSError errorWithDomain:@"kEncryptionError" 
             code:ccStatus 
            userInfo:nil]; 
     } 
     dataOut = nil; 
    } 

    return dataOut; 
} 

也看到RNCryptor的全面實施。

+0

感謝您的幫助,我該如何稱此方法? NSData * decrypted = [doCipher ....]; ? 對不起,我是一個絕對新手:/ – Devtronic

+0

你將不得不包括安全框架,#import ,稱之爲'[ClassName doCipher ...];'其中ClassName是名稱它真的要考慮RNCryptor,它是一個編譯實現,我提供的是一個精通Objective-C和密碼的人的片段。 – zaph

+0

謝謝,它的工作精彩:)我忘記將qr數據從十六進制字符串轉換爲NSData ...謝謝! :) – Devtronic