我想使用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