2012-02-06 9 views
0

私は700MBほどの巨大な暗号化ファイル(mp4)を持っています。ファイルのヘッダーは約暗号化されています(1MB +ダミーバイト)。このファイルの復号化は成功しています。ファイルiOSのデータ(バイト)を変更する

ファイル(同じファイル)内の(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.9メガバイト+いくつかの不要なバイト+暗号化されていないバイト)持続します。

克服する方法のヒントが参考になります。

答えて

0

以下の機能を試しましたか?ヘッダーバイトを取り除くのに役立ちます。次に、解読されたバイトを変数に入れ、後者の値を追加することができます。

- (NSData *)subdataWithRange:(NSRange)range; 
2

ファイル全体をメモリに読み込むことを避けることをお勧めしますか? 2つの解決策は、あなたがそれを攻撃する方法に応じて、あります

まずmemory mapped fileだろう。ヘッダーのサイズは変更できないことに注意してください。あなたが提案するよう

代わりに、あなたは、NSFileHandleを使用することができます。 "更新する"ためにファイルを開き、ファイルの先頭に移動して新しいバイトを書き込みます。その後、閉じる。ヘッダーのサイズは変更できません。


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

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

+0

ありがとうございました。私はNSFileHandlerを使用しましたが、私は暗号化されたデータ(バイト)をファイルに書き込んだ後で問題に直面しています。親切にも、同じことを解決する際に私を助けてください。 –

関連する問題