0

我正在开发一个使用 SQLite 作为数据库的应用程序。我正在为 SQLite 使用 Devart dotconnect ( http://www.devart.com/dotconnect/sqlite/ ) 以及 .NET 4.5 中的实体框架来与数据库交互。我有兴趣通过加密保护数据库。我也看过这篇文章(带有加密/密码保护的 SQLite)。乍一看,Devart 和实体框架支持的唯一加密是 SEE,许可证费用为 2000 美元。是否有人知道任何与此设置兼容的开源解决方案?我对实体框架有点陌生,所以我什至不确定当实体框架解密数据库时幕后发生的所有事情......也许有一个我没有考虑过的替代方案?

4

3 回答 3

0

我在两个小项目中使用了开源System.Data.SQLite提供程序,两者都需要以某种方式保护数据库。您可以阅读提到的详细信息:

加密数据库支持。加密数据库完全加密,支持二进制和明文密码类型

在项目的功能页面

于 2013-05-28T18:46:28.727 回答
0

对于System.Data.SQLite使用默认加密:创建空数据库并在下面运行程序,然后在应用程序的连接字符串中使用密码属性。

void Main()
{
    // Connection strings:


   string sqliteDBFile = @"C:\temp\test.db";
        string connStr = @"data source=" + sqliteDBFile;
        string password = "password";

        // Query create all the tables in the database:
        string sql = @"CREATE TABLE...";

// Connection code:

        SQLiteConnection cnn = null;

        try {

            cnn = new SQLiteConnection (connStr);

            cnn.Open ();

            cnn.ChangePassword (password);

            SQLiteCommand myCommand = new SQLiteCommand (sql, cnn);

            myCommand.ExecuteNonQuery ();

        } catch (Exception e) {

            Console.WriteLine ("Caught exception: " + e.Message);
            Console.ReadLine();

        } finally {

            if (cnn != null) {

                cnn.Close ();

            }
        }
    }
于 2013-08-06T13:13:37.117 回答
0

好吧,已经5天了,没有人回答,所以我会把我的发现放上来。除了 SEE、CEROD 和SQLiteCrypt之外,我没有找到 dotConnect SQLite 专门支持的任何其他加密方法。SQLiteCrypt 似乎是最便宜的,但功能最少。我假设 dotConnect SQLite 支持它,因为它有一个选项(请参见此处)。根据我的研究,如果您的预算紧张并且想要保护您的数据库,您将不得不使用 SQLiteCrypt 或通过尽可能地隐藏它来保护数据库(这可能只会让普通用户不会弄乱数据)。请记住,我的要求是使用 dotConnect SQLite 和实体框架。没有这些限制,还有更多可用的选项。

于 2013-05-21T15:13:09.517 回答