子类fstream和即时解密数据

时间:2017-03-07 11:34:39

标签: c++

我打开fstream来阅读protobuf文件。

std::fstream input(pbpath, std::ios::in | std::ios::binary);

现在我希望能够加密这个文件(事先)并在从我的专用fstream子类读取时动态解密数据,因此读者看来它来自未加密的文件。 / p>

我必须覆盖哪些方法才能动态解密?

1 个答案:

答案 0 :(得分:1)

实现这一目标的更可接受的方法是从std::basic_filebuf派生并使用它来包装原始流缓冲区。然后,在将流数据交给fstream之前,您将执行流数据的解密(以及加密,如果您想支持写入)。

您可以通过调用std::fstream::rdbuf来访问和替换您自己的流缓冲区。在您的情况下,您可以打开文件,将filebuf传递到自定义文件,然后替换流缓冲区。

这个类中有很多函数,但是你只需要处理一些函数。您可能有一些关于有效操作的额外规则,例如随机搜索使您的解密状态机无效等等......