如何从 NSData 中拆分字节?
How to split bytes from NSData?
所以..我已经从服务器加密数据需要解密,这样我才能得到完整的响应JSON。问题是我需要拆分前 16 个字节的数据以获得用于解密的 IV,其余字节是加密数据。我尝试了以下方法:
NSData *wholeData = [[NSData alloc] initWithBase64EncodedString:@"IYSaYh92saFT5t/ueQQtlTaFT1oW33FXPLDUsRMATBLUrY/6Z1VGK1KFmyeRwHpbi85T7ZNzDQAl5v8cu60DcJLwVQDI6KdwbmCq0+L62IM7Ixw60+G8gTkm+6+MLtyE" options:0];
NSData *d1 = [wholeData subdataWithRange:NSMakeRange(0, 16)];
NSData *d2 = [wholeData subdataWithRange:NSMakeRange(17, wholeData.length)];
NSData *enc = d2;
NSData *key = [[NSData alloc] initWithBase64EncodedString:@"alskd81039aisdf/tusd8341iasldkjfY=" options:0];
NSData *enciv = d1;
NSData *decrypted = [FBEncryptorAES decryptData:enc key:key iv:enciv];
然后我得到以下错误:
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSConcreteData subdataWithRange:]: range {17, 96} exceeds data length 96'
我该如何解决我的问题?
NSData *d2 = [wholeData subdataWithRange:NSMakeRange(17, wholeData.length - 17)];
你可以试试这个
NSData* blob;
NSUInteger length = [blob length];
NSUInteger chunkSize = 100 * 1024;
NSUInteger offset = 0;
do {
NSUInteger thisChunkSize = length - offset > chunkSize ? chunkSize : length - offset;
NSData* chunk = [NSData dataWithBytesNoCopy:(char *)[blob bytes] + offset
length:thisChunkSize
freeWhenDone:NO];
offset += thisChunkSize;
// do something with chunk
} while (offset < length);
所以..我已经从服务器加密数据需要解密,这样我才能得到完整的响应JSON。问题是我需要拆分前 16 个字节的数据以获得用于解密的 IV,其余字节是加密数据。我尝试了以下方法:
NSData *wholeData = [[NSData alloc] initWithBase64EncodedString:@"IYSaYh92saFT5t/ueQQtlTaFT1oW33FXPLDUsRMATBLUrY/6Z1VGK1KFmyeRwHpbi85T7ZNzDQAl5v8cu60DcJLwVQDI6KdwbmCq0+L62IM7Ixw60+G8gTkm+6+MLtyE" options:0];
NSData *d1 = [wholeData subdataWithRange:NSMakeRange(0, 16)];
NSData *d2 = [wholeData subdataWithRange:NSMakeRange(17, wholeData.length)];
NSData *enc = d2;
NSData *key = [[NSData alloc] initWithBase64EncodedString:@"alskd81039aisdf/tusd8341iasldkjfY=" options:0];
NSData *enciv = d1;
NSData *decrypted = [FBEncryptorAES decryptData:enc key:key iv:enciv];
然后我得到以下错误:
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSConcreteData subdataWithRange:]: range {17, 96} exceeds data length 96'
我该如何解决我的问题?
NSData *d2 = [wholeData subdataWithRange:NSMakeRange(17, wholeData.length - 17)];
你可以试试这个
NSData* blob;
NSUInteger length = [blob length];
NSUInteger chunkSize = 100 * 1024;
NSUInteger offset = 0;
do {
NSUInteger thisChunkSize = length - offset > chunkSize ? chunkSize : length - offset;
NSData* chunk = [NSData dataWithBytesNoCopy:(char *)[blob bytes] + offset
length:thisChunkSize
freeWhenDone:NO];
offset += thisChunkSize;
// do something with chunk
} while (offset < length);