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

问题描述 投票:1回答:1

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

我想保护此SQLite数据库:

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

到目前为止,我发现我能做的最简单的事情是加密,如果您尝试这样做,那么任何没有正确密码的人都会收到一条消息,例如“ 此文件不是数据库”打开它。

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

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

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

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

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

sqlite delphi encryption c++builder firedac
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.