通过流的方式处理文件压缩,加解密,签名

问题背景介绍

最近的项目需要进行很多的文件处理,因此就有了大量的IO操作。有的地方是先解密,再加密,有的是压缩,加密,再签名,最主要的是所有的非加密文件都需要安全删除,先填充一遍0,再把文件删除。

初始解决方案和问题

开始时我们使用文件来存储处理过程中的临时数据,以文件更换密码为例,需要进行如下处理:

  1. 解密原来的加密文件,写到一个临时文件
  2. 读取解密的临时文件,加密写到最终文件
  3. 将临时文件填充0,并删除

示例代码如下:

FileEncryptor.decrypt(originalEncryptedFile, tempFile);
FileEncryptor.encrypt(tempFile, resultEncryptedFile);
FileEraser.safeErase(tempFile);

这个过程中的IO操作如下图所示: Continue reading “通过流的方式处理文件压缩,加解密,签名”