【问题标题】:Multiple encryption append to a file多重加密附加到文件
【发布时间】:2016-07-20 20:59:02
【问题描述】:

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

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

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

我的想象:

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

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

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

【问题讨论】:

    标签: ios objective-c encryption rncryptor


    【解决方案1】:

    你可以做很多事情:

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

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

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

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

    【讨论】:

    • 感谢您的建议。我想我会同意你的第二点或最后一点。
    【解决方案2】:

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

    步骤:

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

    【讨论】:

    • 这样好一点,因为它每次都跳过解密,但它仍然必须从文件中读取整个数组才能附加到它,然后保存新创建的数组。
    猜你喜欢
    • 2012-05-04
    • 2022-08-14
    • 2011-07-20
    • 2019-04-29
    • 1970-01-01
    • 2014-02-19
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多