c++ - 加密/解密 SQLite 数据库并使用它 "on the fly"

标签 c++ qt sqlite encryption qt4

事情是这样的: 在我的 Qt4.6 项目中,我使用了 SQLite 数据库。这个数据库不应该在我的硬盘上未加密。所以我想,在我的程序每次启动时,都会要求用户输入密码来解密数据库。当然,数据库永远不应该在我的硬盘上“明文”(未加密)。
那么是否有可能“即时”解密 SQLite 数据库并读写数据?哪种算法最好(可能是 AES)?
当不可能(或非常慢)时,最好加密数据库中的每个字符串并在密码正确时解密字符串(这样用户可以打开数据库,但不知道所有条目的含义) ?

最佳答案

虽然没有内置支持,但您确实有选择。

1) 您可以自己加密/解密所有字符串,但这需要大量工作,不透明,并且不允许您执行诸如在数据库中搜索之类的操作。

2) SQLiteCryptSQLCipher做你正在寻找的。

您几乎可以完全透明地使用它们,而且据说与没有加密的情况相比,它们通常只有大约 5% 的开销。

关于c++ - 加密/解密 SQLite 数据库并使用它 "on the fly",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2571620/

相关文章:

c++ - 是否可以设置全局 QPainter 默认渲染提示?

android - 无法使用Android构建Qt 5.9.0

database - Android中使用的SQLite版本?

android - SQLite in operator in query()

c++ - 无需汇编的 C/C++ 函数定义

c++ - 我可以在宏中编写模板类吗?

c++ - 在 C++ 中获取 URL 的最后 N 段

c++ - 调用模板化成员的成员函数

qt - 共享 OpenGL VAO/VBO/等。通过 QGLWidget

ios - 将 UIImage 以二进制形式保存到 SQLite 并使用 imageWithData 检索它