多个加密附加到文件

时间:2016-04-01 06:50:52

标签: ios objective-c encryption rncryptor

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

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

  1. 阅读文件
  2. 从阅读字符串中描述信息
  3. Concat使用新字符串解密字符串
  4. 加密连接字符串
  5. 将其写入文件
  6. 我的想象:

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

      如果有的话,会感谢Objective-C中的代码。

2 个答案:

答案 0 :(得分:0)

您可以使用该数组存储信息,然后将该数组读写到文件中。找到Example here

步骤:

  1. 从文件中读取数组。
  2. 将新加密字符串添加到数组。
  3. 将数组写入文件。

答案 1 :(得分:0)

你可以做很多事情:

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

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

  • 在密文之间使用二进制分隔符(如0x0101),但这样的分隔符可能仍会出现在密文中,因此如果您在密文中找到某个分隔符,则需要将其转义。为了做对,这有点棘手。

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