如何使用FireDAC加密SQLite数据库?

时间:2019-05-29 14:06:00

标签: sqlite delphi

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

如何使用FireDAC加密此SQLite数据库?输入用户名,密码并加密时,会收到“密码数据库未加密”消息

注意:

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

4 个答案:

答案 0 :(得分:1)

Documentation

  

SQLite加密数据库

     

方法

     

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

答案 1 :(得分:1)

最近的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>. 

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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