- (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