0

我有一个程序状态的日志。此日志可以手动或时间间隔保存在文件中以进行持久存储。在将其保存到文件之前,它已使用RNCryptor加密。

我当前附加(保存)到文件流:

  1. 读取文件
  2. 从读取的字符串中解密信息
  3. 用新字符串连接解密的字符串
  4. 加密连接的字符串
  5. 将其写入文件

我想象的:

  1. 编码新字符串
  2. 附加到文件

当我读到这篇文章时,我将不得不从所有编码的字符串中构建一个字符串。但我不知道如何解密其中包含多个加密块的文件。如何区分一个结束和另一个开始。这也是最佳性能选择。文件中的文本最大可以达到 100MB(可能永远不会这么大)。使用Core Data可行吗?每个附加为不同的记录或其他内容。核心数据可以加密,因此不需要RNCryptor

如果有的话,将不胜感激Objective-C中的代码。

4

2 回答 2

0

你可以做很多事情:

  • 最简单的方法是将密文编码为文本(例如使用 Base64)并将每个编码的密文写入新行。您需要为此进行编码,因为密文本身可能包含可以解释为换行符控制字符的字节,但文本编码不会发生这种情况。这样做的问题是它会不必要地炸毁日志(例如,如果使用 Base64,则会炸毁 33%)

  • 您可以在每个未编码的密文前面加上其长度(例如 big-endian int32 编码),并以二进制模式将两者按原样写入文件。如果您从头开始读取文件,那么您可以区分每个密文,因为您知道后面的密文有多长以及下一个编码长度何时开始。爆炸仅与每个密文的密文长度的编码一样大。

  • 在密文之间使用二进制分隔符,例如 0x0101,但是这样的分隔符可能仍然会出现在密文中,所以如果在密文中的某个地方找到它,则需要对其进行转义。这有点棘手。

  • 如果日志量很小(几 MB),那么您可以找到一个库来附加到 ZIP 文件中。

于 2016-04-01T08:09:10.483 回答
0

您可以使用数组来存储信息,然后将该数组读取和写入文件。在这里找到示例

脚步 :

  1. 从文件中读取数组。
  2. 将新加密字符串添加到数组。
  3. 将数组写入文件。
于 2016-04-01T07:45:33.420 回答