如何使用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);