0

約 700MB の巨大な暗号化ファイル (mp4) があります。ファイルのヘッダーは(1MB+ダミーバイト)程度暗号化されています。このファイルの復号化は正常に完了しました。

今、ファイル(同じファイル)内の(1MB +ダミー)暗号化されたバイトを削除し、それらを復号化されたバイトに置き換えたいと思います。

どうすれば同じことを達成できますか? この点で何か助けていただければ幸いです。前もって感謝します。

NSFileHandle *encVideoFile=[NSFileHandle  fileHandleForUpdatingAtPath:**encVideoFilePath**];  

//the data is read from file by using readDataOfLength method & decrypted (decryptedData). 

[encVideoFile seekToFileOffset:0];
[encVideoFile writeData:decryptedData];

[encVideoFile closeFile];

私がここで直面している問題は、私が (1MB+ DummyBytes) 暗号化しており、1MB+ DummyBytes を復号化すると、約 0.9MB (復号化されたバイト) になることです。

それでも私の問題は解決しません(0.9MB+不要なバイト+暗号化されていないバイト)。

克服方法の提案は役に立ちます。

4

2 に答える 2

2

あなたの目標は、ファイル全体をメモリに読み込まないようにすることだと思いますよね?攻撃方法に応じて、2 つの解決策があります。

最初はメモリマップされたファイルです。ヘッダーのサイズは変更できないことに注意してください。

または、あなたがNSFileHandle提案するように、を使用することもできます。「更新」のためにそれを開き、ファイルの先頭を探して、新しいバイトを書き込みます。次に閉じます。繰り返しますが、ヘッダーのサイズは変更できません。


あなたの編集は、ファイルを「圧縮」して「不要なバイト」を削除しようとしていることを示唆しています。これは、ファイルを書き直さないと不可能です。iPhone のファイル システムには、ファイルの末尾以外の場所からデータを削除するメカニズムがありません。

通常、最善の解決策は、最初にヘッダーを書き込む前にヘッダーを復号化することです。または、不要なバイトをスキップするように読み取りアルゴリズムを変更します。

于 2012-02-06T20:34:20.613 に答える
0

以下の関数を使用してみましたか?ヘッダー バイトを取り除くのに役立つ場合があります。次に、復号化されたバイトを変数に入れ、後者の値を追加できます。

- (NSData *)subdataWithRange:(NSRange)range;
于 2012-02-06T18:19:36.050 に答える