所以基本问题是在资源受限设备中加密文件。 我使用了一种相当危险的方法来使用两个 FileStreams,其中
- FileStream 1 正在读取文件并将其复制到字节数组
- 字节数组的内容是加密的。
- FileStream 2,将字节写回同一个文件。
这工作正常,但如果加密中途停止等,很有可能会弄乱文件。
所以正常的做法是写入一个临时文件,然后将其移动到原来的位置并替换原来的文件。
然而,问题在于资源(尤其是存储)非常有限的手机,创建比方说另一个 200MB 或 300MB 的文件可能是不可能的。
那么Mobile Devies有什么方法可以解决这个问题呢?我是否必须在空间和弄乱文件之间进行赌博?
最佳答案
使过程更安全的一种方法可能是:
- FileStream 1 正在读取文件并将其复制到字节数组
- 您读取的字节将写入一个与您的缓冲区大小相同的小型“暂存”文件,以及成功读取的最后一个 block 的位置。
- 字节数组的内容是加密的。
- FileStream 2,将字节写回同一个文件。
如果过程中断,请检查临时文件以查看您的最后位置。然后你可以从那里重新开始这个过程,并且仍然能够加密整个文件。 (如果你想取回原始文件,你将加密剩余的 block ,然后再解密)。
当然,此过程仅在您使用加密算法时有效,该算法在加密当前 block 时依赖于前面 block 的结果。根据您选择的算法,您可能需要多存储一点。
关于c# - 在资源受限的移动设备中加密文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3222460/