【问题标题】:AES 128 with CBC In IOSIOS 中带有 CBC 的 AES 128
【发布时间】:2017-07-04 07:04:26
【问题描述】:
+ (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 With CBC In IOS)

【问题讨论】:

标签: objective-c commoncrypto


【解决方案1】:

错误代码 -4303 是 kCCAlignmentError。来自文档:

解密时,或使用带填充的分组密码加密时 禁用,如果总的数量将返回 kCCAlignmentError 提供给 CCCryptUpdate() 的字节不是 当前算法的块大小。

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

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 2018-04-04
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 2020-04-15
    • 2021-02-13
    • 1970-01-01
    相关资源
    最近更新 更多