首页 > 解决方案 > sqlite:在内存数据库触及二级存储之前对其进行加密

问题描述

我正在考虑从 C++ 运行时关系数据库(用于索引的 std::maps、用于列的 std::vectors 等)切换到使用内存中的 sqlite 数据库的可能性。这主要用于代码维护。(几个月后回过头来查看我的代码,我花了一些时间重新熟悉我使用 C++ 组件设计的架构;使用 SQL 语句至少会更加自文档化。)

不过,这里有一个障碍:数据未经加密就无法触及二级存储。我目前的解决方案非常适合在刷新之前进行加密。然而,Sqlite 似乎是它自己的不透明、自包含的生态系统,不利于将底层数据库二进制数据作为数据库之外的任何东西进行操作。

所以,我很好奇是否有人知道一种方法,或者已经开发了一种方法,在sqlite备份系统中放置一个加密钩子,这样:内存->加密->磁盘,然后反过来。或者,我也可以将内存数据库作为二进制“blob”抓取并在我自己写出来之前对它做我自己的事情(并在重新加载它时反转这个过程)。我没有看到在 sqlite 备份 API 中明确提供任何此类机会。

注意:我对使用 SEE 的东西不感兴趣,只对“公共领域”的 sqlite 产品感兴趣。我的应用程序中已经(通过 Qt)使用了足够的加密代码,所以我不想要竞争系统。

感谢您的任何建议。

标签: c++sqliteencryption

解决方案


推荐阅读