如何使用CCCrypt()来encryption文件?

当我encryption一个文件(doc,pdf等)时,我使用:

size_t bufferSize = dataLength + kCCBlockSizeAES128; CCCrypt( kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCKeySizeAES256, NULL /* initialization vector (optional) */, dataBytes, dataLength, /* input */ buffer, bufferSize,/* output */ &numBytesEncrypted ); 

当解密时,我使用:

 size_t bufferSize = dataLength + kCCBlockSizeAES128; CCCryptorStatus result = CCCrypt( kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyPtr, kCCKeySizeAES256, NULL /* initialization vector (optional) */, dataBytes, dataLength,/* input */ buffer, bufferSize,/* output */ &numBytesEncrypted ); 

但是当解密时,它返回错误:kCCDecodeError = -4304。

如果在解密时删除了kCCOptionPKCS7Padding的参数,则不会有错误。 但该文件无法打开。

那么,你能告诉我如何通过这些参数?

非常感谢!

这用于encryption

  NSString *key =@"YourKey"; char keyPtr[kCCKeySizeAES256+1]; // room for terminator (unused) bzero( keyPtr, sizeof(keyPtr) ); // fill with zeroes (for padding) // fetch key data [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; char *dataIn = "This is your data"; char dataOut[500];// set it acc ur data bzero(dataOut, sizeof(dataOut)); size_t numBytesEncrypted = 0; CCCryptorStatus result = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,kCCOptionPKCS7Padding, keyPtr,kCCKeySizeAES256, NULL, dataIn, strlen(dataIn), dataOut, sizeof(dataOut), &numBytesEncrypted); 

这是解密

 char dataOut2[500]; bzero(dataOut, sizeof(dataOut2)); size_t numBytesDecrypted = 0; CCCryptorStatus result = CCCrypt(kCCDecrypt, kCCAlgorithmAES128,kCCOptionPKCS7Padding, keyPtr,kCCKeySizeAES256, NULL, dataOut, numBytesEncrypted, dataOut2, sizeof(dataOut2), &numBytesDecrypted); 

改变线

 bzero(dataOut, sizeof(dataOut2)); 

 bzero(dataOut2, sizeof(dataOut2)); 

谢谢英德

好,我知道了! 也testing成功了。 该行应该是:

 CCCrypt(kCCDecrypt, kCCAlgorithmAES128,kCCOptionPKCS7Padding, keyPtr,kCCKeySizeAES256, NULL, dataOut, numBytesEncrypted, dataOut2, sizeof(dataOut2), &numBytesDecrypted);