- (NSData *)kd_AES128EncryptWithKey:(NSString *)key {
if (key.length == 0) {
return nil;
}
char keyPtr[kCCKeySizeAES128 + 1];
memset(keyPtr, 0, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
int diff = kCCKeySizeAES128 - (dataLength % kCCKeySizeAES128);
NSUInteger newSize = 0;
if (diff > 0) {
newSize = dataLength + diff;
}
char dataPtr[newSize];
memcpy(dataPtr, [self bytes], [self length]); // crash EXC_BAD_ACCESS
...
free(buffer);
return nil;
}
在此崩潰: 新尺寸= 800016 命令datasize = 800001AES128 memcry()碰撞
當我使memcry(),but if the data is smaller
爲NSData的AES128加密(800001個字節),崩潰,它的工作正常
有人能幫助我嗎?
這看起來像objective-C不是C.請使用正確的標記。另外,代碼調試問題應該包含[mcve]。 – kaylum
1.你想用'diff'和'kCCKeySizeAES128'完成什麼? 2.如果'diff <= 0''newSize'是'0',這不是你想要的。 3.「kCCKeySizeAES128」與數據長度有什麼關係? 4.缺少代碼'...'很難告訴所有提供的代碼。 5.變量名稱'diff'在功能上不是很具描述性。 – zaph