如何获取CCCrypt iOS的返回数据?

时间:2016-10-27 11:02:48

标签: ios objective-c encryption

我将CCCryptorStatus作为kCCSuccess。
这意味着加密成功。
但是,我想获取加密数据,如何获取它?

任何帮助将不胜感激。

谢谢,
Puja Rathod

1 个答案:

答案 0 :(得分:1)

好好看看CCCrypt的论点:

CCCryptorStatus CCCrypt(CCOperation op,
     CCAlgorithm alg,
     CCOptions options,
     const void *key,
     size_t keyLength,
     const void *iv,
     const void *dataIn,
     size_t dataInLength,
     void *dataOut,
     size_t dataOutAvailable,
     size_t *dataOutMoved);

(这是来自使用C类型的旧man page。)

使用最后三个参数,您必须提供:

  • 函数写入加密数据的字节缓冲区
  • 缓冲区的总(可用)长度
  • 和函数可以写入写入的字节数的地方。

在Objective-C中,您可以使用NSMutableData提供必要的缓冲区(代码示例取自here):

CCCryptorStatus ccStatus   = kCCSuccess;
size_t          cryptBytes = 0;
NSMutableData  *dataOut    = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128];

ccStatus = CCCrypt(encryptOrDecrypt, // kCCEncrypt or kCCDecrypt
                   kCCAlgorithmAES128,
                   kCCOptionPKCS7Padding,
                   key.bytes, 
                   kCCKeySizeAES128,
                   iv.bytes,
                   dataIn.bytes,
                   dataIn.length,
                   dataOut.mutableBytes,
                   dataOut.length,
                   &cryptBytes);

dataOut.length = cryptBytes;