- (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;
}
: NewSizeパラメータは= 800016 DATASIZE = 800001AES128 memcry()のクラッシュこのクラッシュで
私はNSDataの(800001バイト)memcryで、クラッシュ()、but if the data is smaller
ためのAES128の暗号化を行うと、それが動作通常
誰かが私を助けてくれますか?
これはobjective-Cのように見えます。正しいタグを使用してください。また、コードのデバッグに関する質問には[mcve]が含まれている必要があります。 – kaylum
1. 'diff'と' kCCKeySizeAES128'で何を達成しようとしていますか? 2.もし 'diff <= 0'なら' newSize'は '0'です。これはあなたが望むものではありません。 3. 'kCCKeySizeAES128'はデータ長と何が関係していますか? 4.欠落しているコード '...'では、提供されているすべてのコードを対象とすることは困難です。 5.変数名 'diff'は、その機能に関してあまり説明的ではありません。 – zaph