AES 128 с CBC в IOS

+ (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)


person Sarath    schedule 04.07.2017    source источник
comment
Ошибка выравнивания означает, что что-то не так с размерами. Пожалуйста, проверьте мой ответ для более подробной информации: stackoverflow.com/ вопросы/35921254/aes-ecb-ios-шифровать/   -  person Joanne    schedule 01.02.2018


Ответы (1)


Код ошибки -4303 — kCCAlignmentError. Из документации:

При расшифровке или шифровании с помощью блочного шифра с отключенным дополнением будет возвращена ошибка kCCAlignmentError, если общее количество байтов, переданных функции CCCryptUpdate(), не является целым числом, кратным размеру блока текущего алгоритма.

Вы должны проверить правильность размера ваших входных данных.

person John Tracid    schedule 05.07.2017