【问题标题】:Encrypt SQLITE database and use it with FireDac in a windows VCL application加密 SQLITE 数据库并在 Windows VCL 应用程序中与 FireDac 一起使用
【发布时间】:2019-11-21 18:32:06
【问题描述】:

我正在使用 c++ builder 编写一个 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】:

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

    Firedac 可以打开一个它自己加密的 SQLite 数据库,因此问题可以通过这样做作为一种更好的方法自行解决。其他程序只能看到磁盘上的加密版本,没有密码就无法打开。

    【讨论】:

    • 工作就像一个魅力,在这里我认为 Firedac 无法连接到加密数据库,谢谢 :)
    • @Brian,我知道这在内部是如何运作的。也许我只是无法得到问题(或那个“问题”段落)。您只是在回答如何打开加密数据库。如果这是问题所在,只需以这种方式修改问题,我们就完成了:) [或者如果这是主题,OP 可以这样做]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 2016-03-14
    • 2021-12-31
    相关资源
    最近更新 更多