我想使用CCCrypt加密我的数据,但一些不对的地方,我后加密的数据长度的改变,而解密并没有发生,这里是下面的代码。数据尺寸改变由CCCrypt
- (NSData *)AES256EncryptWithKeyGenerateIV:(NSString *)key {
char keyPtr[kCCKeySizeAES128+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
char ivPtr[kCCKeySizeAES128+1];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5([key UTF8String], strlen([key UTF8String]), result);
NSString* resultString = [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
resultString = [resultString substringToIndex:16];
bzero(ivPtr, sizeof(ivPtr));
[resultString getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
NSLog(@"Before encrypt dataLength is %d",dataLength);
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,
0,
keyPtr, kCCBlockSizeAES128,
ivPtr,
[self bytes], dataLength,
buffer, bufferSize,
&numBytesDecrypted);
NSLog(@"After file encrypted dataLength is %d",numBytesDecrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer);
return nil;
}
和这里为i打印数据长度出日志:
2012-07-09 18:29:20.787加密数据长度之前是248
2012-07-09 18:29:20.788文件加密后DATALENGTH是240
2012-07-09 18:29:20.789之前加密数据长度是20
2012-07-09 18:29:20.790的文件加密数据长度是16
2012-07-09 18之后: 29:20.792加密dataLength之前是583
2012-07-09 18:29 :20.792以后文件加密数据长度是576
2012-07-09 18:29:20.795之前加密数据长度是31120
2012-07-09 18:29:20.796的文件加密数据长度是31120
2012-07-09后18:29:20.797加密数据长度之前是27551
2012-07-09 18:29:20.798以后文件加密数据长度是27536
2012-07-09 18:29:20.800之前加密数据长度是1266
2012-07 -09 18:29:20.800以后文件加密数据长度是1264
2012-07-09 18:29:20.802之前加密数据长度是431315
2012-07-09 18:29:20.809文件后加密数据长度是431312
2012-07-09 18:29:20.815之前加密数据长度是204
2012-07-09 18:29:20.815的文件加密数据长度是192
2012-07-09 18时29分后: 20.817加密DATALENGTH之前是1083
2012-07-09 18:29:20.817的文件加密数据长度是1072
2012-07-09 18之后:29:20.818之前加密数据长度是440
2012-07-09 18: 29:20.819文件后加密的数据长度为432
有人可以告诉我为什么吗?
我试图KccOptionPKCS7Padding数据大小日志 之前加密数据长度是248 文件加密的数据长度为256 解密的数据长度之后是246 数据大小是正确的,但我无法打开文件解密后 – 2012-07-12 05:08:31
再次尝试,它现在工作,thx你很多! – 2012-09-14 05:19:13