次の状況があります。復号化する必要がある 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 に渡すことで、コピーなしのバイト バッファを作成する何らかの方法があるのではないでしょうか?
ご協力いただきありがとうございます