【问题标题】:How encrypt SQLite database with FireDAC?如何使用 FireDAC 加密 SQLite 数据库?
【发布时间】:2019-06-16 16:35:31
【问题描述】:

我正在使用 DB Browser for SQLite(未加密)创建 SQLite 数据库,并在 delphi 中使用 FireDAC 打开。(可以检索数据,例如从 abc 中选择 *)。

如何用 FireDAC 加密这个 SQLite 数据库?当输入用户名、密码和加密得到消息“Cipher DB is not encrypdet”

注意:

从 Delphi FireDac 创建 SQLite 数据库时,我可以使用加密!

【问题讨论】:

  • 恐怕你的 q 一点都不清楚。您是否在问如何使用 FireDAC 打开已创建的 Sqlite 数据库,并使用 D 浏览器 sqlitebrowser.org 进行加密,使用版本 3.11.2 或更高版本?如果不是,你到底在问什么
  • @MartynA 我用firedac打开非加密数据库,这个数据库如何用firedac加密?

标签: sqlite delphi


【解决方案1】:

要加密数据库,请使用 TFDSQLiteSecurity 组件。您还需要一个 TFDSQLitePhysSQLiteDriverLink 组件来配合它。

如果数据库未加密,则其密码为“”。所以使用 '' 作为 OldPassword 并在这种情况下创建新密码。密码格式为 algorithm:PassPhrase。请参阅有关选择的文档,我使用 aes-256。此外,执行此操作时需要关闭数据库。

...
//Change password
FDSQLiteSecurity1.Password := OldPassword;
FDSQLiteSecurity1.ToPassword := NewPassword;  // example: 'aes-256:mypassword123'
FDSQLiteSecurity1.ChangePassword;
...
//Remove Password
FDSQLiteSecurity1.Password := OldPassword;
FDSQLiteSecurity1.ToPassword := '';
FDSQLiteSecurity1.RemovePassword;
...

【讨论】:

    【解决方案2】:

    来自Documentation

    SQLite 加密数据库

    接近

    独特的 SQLite 之一 特点是高速强数据库加密。它让你 使数据库文件内容保密并确保完整性 控制数据库文件。加密的数据库格式不是 与其他类似的 SQLite 加密扩展兼容。 这意味着 你不能使用加密的数据库,用非 FireDAC 加密 库。 如果你需要这样做,那么你必须解密一个数据库 使用原始工具并使用 FireDAC 对其进行加密。

    【讨论】:

    • Tnx 回答,但我的问题是如何用 fireac 加密非加密数据库?
    • @Pointer 我不认为这是 Firedac 或 Delphi 的问题,我认为这是用于创建 db 文件的 SQLite 库的版本。
    • @NasreddineGalfout 不,您可以通过FireDAC Services 选项卡中的TFDSQLiteSecurity 组件来执行此操作。确保还使用TFDSQLiteValidate 来验证您的数据库文件,并确保在加密您的数据库之前使用TFDSQLiteBackup 组件备份数据库文件。
    • @Sami 你在说什么。这是产品制造商网站上文档的引述。你说的是真的,但不是在这种情况下。
    • OP询问“如何加密未加密的SQLite数据库”,这与他是否可以通过其他工具加密已经加密的数据库无关。 :)
    【解决方案3】:

    最近的 Delphi 版本附带了一个在 Sqlite 数据库上使用加密的示例项目,请参阅documentation。顺便说一句,我自己没用过。

    包括这个部分

    Encrypt DB
        Encrypt: Encrypts the database according to the Encryption mode and the password provided.
    
    The sampe uses TFDSQLiteSecurity.SetPassword to encrypt the database with the password provided.
    
    The database password is the combination of <encryption algorythm>:<password>. 
    

    【讨论】:

      【解决方案4】:

      当我第一次尝试加密 SQLite 数据库以与 Embarcadero FireDAC 一起使用时,我遇到了一些挑战。此外,所有信息都是由 Embarcadero 发布的,问题在不同的论坛上一次又一次地弹出。我的案例是在社区支持的基础上解决的,但是当时间允许时,简单的 Delphi 应用程序被组装并在 Sourceforge 上可用。希望它会使加密/解密稍微容易一些,特别是对于新手来说 https://sourceforge.net/projects/sqlite-sequrity-for-delphi/

      【讨论】:

        猜你喜欢
        • 2019-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多