在Windows VCL应用程序中对SQLITE数据库进行加密并将其与FireDac一起使用

时间:2019-11-21 18:32:06

标签: sqlite delphi encryption c++builder firedac

我正在使用c ++构建器编写Windows VCL桌面。该应用程序使用Firedac和SQLite数据库。

我要保护此SQLite数据库:

  • 只有我的vcl应用可以连接并使用它
  • 其他程序和人员无法使用SQLite文件

到目前为止,我发现我能做的最简单的事情是加密,这样您就可以使任何没有正确密码的人都收到类似“ 此文件不是数据库的信息< / strong>”,如果他试图打开它。

是的,我们可以使用Embarcadero VCL,doc.使用TFDSQLiteSecurity组件以及以下几行来完成此操作:

FDSQLiteSecurity1->Password = "";/* we are protecting (encrypting) our uncyphered database*/
FDSQLiteSecurity1->ToPassword = 'newpassword';   
FDSQLiteSecurity1->ChangePassword();

不幸的是,VCL Firedac应用程序无法连接到加密的sqlite数据库,因此必须先对其进行解密。

为了使事情正常进行,我的程序启动并解密数据库(删除密码),然后连接到数据库并使用它。完成后,我将再次加密数据库(在关闭应用程序时)。

问题: 在这段时间内(我的程序已启动并且正在运行,并且数据库处于未加密状态)我可以阻止其他程序打开SQLITE数据库吗?有没有更好的方法,我愿意提出任何建议

1 个答案:

答案 0 :(得分:4)

一旦被FireDac加密,只需在FDConnection上设置适当的属性即可。密码是password,加密方法是encrypt

Firedac可以打开一个已经加密的SQLite数据库,因此可以通过更好的方法解决此问题。其他程序只能看到磁盘上的加密版本,而没有密码就无法打开它。