2017-07-04 136 views
1
+ (NSData *)doCipher:(NSData *)dataIn 
        iv:(NSData *)iv 
       key:(NSData *)symmetricKey 
      context:(CCOperation)encryptOrDecrypt // kCCEncrypt or kCCDecrypt 
       error:(NSError **)error 
{ 
    CCCryptorStatus ccStatus = kCCSuccess; 
    size_t   cryptBytes = 0; 
    NSMutableData *dataOut = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128]; 

    ccStatus = CCCrypt(encryptOrDecrypt, 
         kCCAlgorithmAES128, 
         0, //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; 
} 

我有DATAIN爲154個字節的數據,密鑰和IV具有16個字節的數據時,我做它給-4303錯誤。(AES128隨着CBC在IOS)加密AES 128與CBC在IOS

+0

對齊錯誤意味着尺寸有問題。請檢查我的答案以獲取更多詳細信息:https://stackoverflow.com/questions/35921254/aes-ecb-ios-encrypt/48559334#48559334 – Joanne

回答

0

錯誤代碼-4303是kCCAlignmentError。從文檔:

當解密,或與分塊密碼術加密與填充 禁用,如果提供給CCCryptUpdate() 字節總數不是 當前算法的的整數倍kCCAlignmentError將被返回時塊大小。

您應該檢查您的輸入數據大小是否正確。

相關問題