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

标签 c# encryption windows-mobile resources filestream

所以基本问题是在资源受限设备中加密文件。 我使用了一种相当危险的方法来使用两个 FileStreams,其中

  1. FileStream 1 正在读取文件并将其复制到字节数组
  2. 字节数组的内容是加密的。
  3. FileStream 2,将字节写回同一个文件。

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

所以正常的做法是写入一个临时文件,然后将其移动到原来的位置并替换原来的文件。

然而,问题在于资源(尤其是存储)非常有限的手机,创建比方说另一个 200MB 或 300MB 的文件可能是不可能的。

那么Mobile Devies有什么方法可以解决这个问题呢?我是否必须在空间和弄乱文件之间进行赌博?

最佳答案

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

  1. FileStream 1 正在读取文件并将其复制到字节数组
  2. 您读取的字节将写入一个与您的缓冲区大小相同的小型“暂存”文件,以及成功读取的最后一个 block 的位置。
  3. 字节数组的内容是加密的。
  4. FileStream 2,将字节写回同一个文件。

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

当然,此过程仅在您使用加密算法时有效,该算法在加密当前 block 时依赖于前面 block 的结果。根据您选择的算法,您可能需要多存储一点。

关于c# - 在资源受限的移动设备中加密文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3222460/

相关文章:

c# - 服务器连接到 NAT 后面的客户端

C# 确保随机数的存在

javascript - 从 Java 到 node.js 的 encryptAES

php - PHP 7.1 及更高版本的数据加密/解密

c# - 抑制 Windows Mobile 6 中的操作系统消息

c# - 绑定(bind)到模板中的嵌套属性

c# - protobuf-net 消息序列化大小属性

c# - 链式 GZipStream/DeflateStream 和 CryptoStream (AES) 在读取时中断

.net - 为什么紧凑框架WebBrowser控制opera中的加载页面?

c# - Windows CE 4.2 的限制是什么?