保护UWP应用程序中的SQLite数据库

时间:2016-09-29 07:40:32

标签: c# uwp entity-framework-core .net-4.6

它是使用UWP数据库的SQLite应用程序。下面是此应用程序的依赖项:

{
    "dependencies": {
    "Microsoft.EntityFrameworkCore.Sqlite": "1.0.1",
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2",
    "Microsoft.Xaml.Behaviors.Uwp.Managed": "1.1.0",
    "Newtonsoft.Json": "8.0.3",
    "Template10": "1.1.*"
    },
    // ...
}

要求是:" [...]拥有一个密码,可以从应用程序或任何其他可以打开SQLite数据库的应用程序访问数据库#34;

实体框架核心似乎不支持这种情况。 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

有关使用SQLCipher和使用Microsoft.Data.Sqlite的朋友的提示,请参阅我的https://jsfiddle.net/0b5rh4cg/帖子。

与EF Core一起使用它的最简单方法可能是使用与DbContext的开放式连接。

class MyContext : DbContext
{
    SqliteConnection _connection;

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        _connection = new SqliteConnection(_connectionString);
        _connection.Open();

        var command = _connection.CreateCommand();
        command.CommandText = "PRAGMA key = 'password';";
        command.ExecuteNonQuery();

        options.UseSqlite(_connection);
    }

    protected override void Dispose()
    {
        _connection?.Dispose();
    }
}

答案 1 :(得分:0)

看看SQLCipher(https://github.com/sqlcipher/sqlcipher)。它提供无缝的完整DB加密,而且开销很小。构建用于Visual Studio的VSIX是一件痛苦的事。如果您不想自己构建它,您可以从https://www.zetetic.net/sqlcipher/获得许可。