代码之家  ›  专栏  ›  技术社区  ›  Ranhiru Jude Cooray

在资源受限的移动设备中加密文件

  •  1
  • Ranhiru Jude Cooray  · 技术社区  · 14 年前

    因此,基本问题是在资源受限的设备中加密文件。

    1. 字节数组的内容是加密的。
    2. 文件流2,将字节写回同一个文件。

    这可以正常工作,但如果加密中途停止,很有可能会弄乱文件等。

    因此,通常的方法是写入临时文件,然后将其移动到原始位置并替换原始文件。

    那么在移动设备中有什么方法来处理这个问题呢?我必须在空间和文件混乱之间赌博吗?

    3 回复  |  直到 14 年前
        1
  •  2
  •   driis    14 年前

    使该过程更安全的一种方法是:

    1. 您读取的字节,连同最后一个成功读取的块的位置一起,被写入一个与缓冲区大小相同的小“暂存”文件。
    2. 字节数组的内容是加密的。
    3. 文件流2,将字节写回同一个文件。

    如果进程被中断,请检查scratch文件以查看上一个位置。然后您可以从那里重新开始这个过程,并且仍然能够加密整个文件(如果你想取回原始文件,你可以加密剩余的块,然后解密)。

        2
  •  1
  •   Henri    14 年前

    首先,您可以检查是否有足够的空间将数组写入tmp文件。

    编辑 我现在意识到,你加密和写入文件的一部分,因为否则它将不适合内存。对吗?

        3
  •  1
  •   Henk Holterman    14 年前

    我必须在空间和文件混乱之间赌博吗?


    如果空间限制强制您就地转换(加密),则没有回滚选项。

    下一个问题是尺寸。如果你的转换(可以)增加数据的大小,你有非常有限的回旋余地。如果ResultSize>(InputSize+Buffer)那么你就不会成功。

    在加密的情况下,您可以在加密流前面使用CompressStream,但是您无法预测它是否可以工作。