2017-07-04 133 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将被返回时块大小。

您应该检查您的输入数据大小是否正确。

相关问题