我打开fstream
来阅读protobuf文件。
std::fstream input(pbpath, std::ios::in | std::ios::binary);
现在我希望能够加密这个文件(事先)并在从我的专用fstream
子类读取时动态解密数据,因此读者看来它来自未加密的文件。 / p>
我必须覆盖哪些方法才能动态解密?
答案 0 :(得分:1)
实现这一目标的更可接受的方法是从std::basic_filebuf
派生并使用它来包装原始流缓冲区。然后,在将流数据交给fstream
之前,您将执行流数据的解密(以及加密,如果您想支持写入)。
您可以通过调用std::fstream::rdbuf
来访问和替换您自己的流缓冲区。在您的情况下,您可以打开文件,将filebuf传递到自定义文件,然后替换流缓冲区。
这个类中有很多函数,但是你只需要处理一些函数。您可能有一些关于有效操作的额外规则,例如随机搜索使您的解密状态机无效等等......