我有以下情况:有一个我需要解密的 NSData。数据包括:
- 定长文件头
- 加密内容
我正在使用 CCCrypt 进行解密,但这可能并不重要,因为这更像是一个与 NSData 相关的问题。这就是我现在分离事物的方式(伪代码):
int hdrsize; // this contains the size of the header
NSData *data; // this contains full encrypted data with a header
// this gives me information, stored in the header + some additional stuff
NSDictionary *hdr = [self _headerInfoFromData:data];
// THIS IS THE PROBLEM AREA
data = [data subdataWithRange:NSMakeRange(hdrsize, [data length] - hdrsize)];
// And the decryption part
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, MS_SEC_ENC_ALGORITHM, kCCOptionPKCS7Padding,
[key bytes], MS_SEC_ENC_KEY_SIZE,
[[hdrdict objectForKey:@"iv"] bytes],
[data bytes], dataLength,
buffer, bufferSize,
如您所见,我的问题是,为了解密,我需要提取没有标头的 NSData 部分。但是有没有办法以某种方式简单地“重用”已经存在的字节而不是制作副本?也许有某种方法可以从中创建一个无复制字节缓冲区,跳过前 X 个字节并将其传递给 CCCrypt?
谢谢你的帮助