0

プログラムの状態のログがあります。このログは、手動で保存することも、永続的なストレージのためにファイルに保存する時間間隔にすることもできます。ファイルに保存する前に、 RNCryptorで暗号化されます。

私の現在のファイルフローへの追加(保存):

  1. ファイルを読む
  2. 読み取った文字列から情報を解読する
  3. 復号化された文字列を新しい文字列と連結します
  4. 連結文字列を暗号化する
  5. ファイルに書き込む

私が想像するもの:

  1. 新しい文字列をエンコードする
  2. ファイルに追加

これを読むと、エンコードされたすべての文字列から文字列を作成する必要があります。しかし、複数の暗号化されたブロックを含むファイルを復号化する方法がわかりません。終わりと始まりを区別する方法。また、これは最高のパフォーマンスの選択です。ファイル内のテキストは、最大で 100MB になる可能性があります (おそらく、これほど大きくなることはありません)。Core Dataの使用は実行可能ですか? それぞれが異なるレコードまたは何かとして追加されます。また、コア データは暗号化できるため、RNCryptorは必要ありません。

もしあればObjective-Cのコードをいただければ幸いです。

4

2 に答える 2

0

できることはたくさんあります。

  • 最も簡単なのは、暗号文をテキストにエンコードし (たとえば Base64 を使用)、エンコードされた各暗号文を新しい行に書き込むことです。暗号化テキスト自体には、改行制御文字として解釈できるバイトが含まれている可能性があるため、そのためのエンコーディングが必要ですが、テキストエンコーディングでは発生しません。これに関する問題は、ログを不必要に爆破することです (例えば、Base64 が使用されている場合は 33%)

  • エンコードされていない各暗号文の先頭にその長さ (ビッグエンディアンの int32 エンコードなど) を追加し、両方をそのままバイナリ モードでファイルに書き込むことができます。ファイルを最初から読み始めると、次の暗号文の長さと次のエンコードされた長さがいつ始まるかがわかるため、各暗号文を区別できます。ブローアップは、各暗号文の暗号文の長さのエンコーディングと同じくらいの大きさです。

  • 暗号文の間に 0x0101 などのバイナリ区切り文字を使用しますが、そのような区切り文字は暗号文にまだ表示される可能性があるため、暗号文のどこかに見つかった場合はエスケープする必要があります。これを正しく行うのは少し難しいです。

  • ログの量が少ない (数 MB) 場合は、ZIP ファイルに追加するライブラリを見つけることができます。

于 2016-04-01T08:09:10.483 に答える
0

配列を使用して情報を保存し、その配列をファイルに読み書きできます。ここで例を見つけてください。

手順 :

  1. ファイルから配列を読み取ります。
  2. 新しい暗号化された文字列を配列に追加します。
  3. 配列をファイルに書き込みます。
于 2016-04-01T07:45:33.420 に答える