Objective-c使用IV进行AES CBC解密

时间:2013-11-04 16:19:23

标签: objective-c encryption aes pkcs#7 cbc-mode

我几天来一直在努力解决这个问题,我似乎无法弄清楚

我尝试使用CCCrypt来解密加密的字符串,我有使用Base64编码的加密字符串,我有密钥和iv。加密是AES256 CBC和PKCS7Padding。

这是我现在正在使用的代码:

- (NSData *)AES256DecryptWithKey:(NSString *)key
{
    char keyPtr[kCCKeySizeAES128+1];
    bzero(keyPtr, sizeof(keyPtr));

    NSUInteger dataLength = [self length];

    size_t bufferSize = dataLength + kCCBlockSizeAES128;
    void *buffer = malloc( bufferSize );

    unsigned char *iv = [@"IV String" cStringUsingEncoding:NSUTF8StringEncoding];

    size_t numBytesDecrypted = 0;

    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
                                      kCCAlgorithmAES128,
                                      kCCOptionPKCS7Padding,
                                      keyPtr, kCCKeySizeAES256,
                                      iv,
                                      [self bytes],
                                      dataLength,
                                      buffer,
                                      bufferSize,
                                      &numBytesDecrypted);

    if( cryptStatus == kCCSuccess )
    {
        return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
    }

    free( buffer );
    return nil;
}

cryptStatus一直返回0,我无法找到解决原因的方法。 我究竟做错了什么?

提前致谢!

0 个答案:

没有答案