多重加密附加到一个文件

Multiple encryption append to a file

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

加密的

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

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

我想象的:

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

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

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

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

步骤:

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

您可以做很多事情:

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

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

  • 密文之间使用0x0101之类的二进制分隔符,但这样的分隔符可能还会出现在密文中,所以如果在密文中的某处找到,需要转义。这有点棘手。

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