【问题标题】:Removing Password from Sqlite Database从 Sqlite 数据库中删除密码
【发布时间】:2020-01-02 16:09:39
【问题描述】:

我浏览了以下文档并使用 .NET Core 3.1 加密了我的 Sqlite 数据库。

Encrypting Sqlite Database

我可以更改文档中的密码。

现在,我想解密数据库并删除密码

我使用了以下代码,但无法删除密码。

using (SqliteConnection sqliteConnection = new SqliteConnection("Data Source=UserData.db;Password=Password"))
{
    sqliteConnection.Open();
    var command = sqliteConnection.CreateCommand();
    command.CommandText = "SELECT quote($newPassword);";
    command.Parameters.AddWithValue("$newPassword", DBNull.Value);        // "", null, (string)null, "NULL", DBNull.Value doesn't work.
    var quotedNewPassword = (string)command.ExecuteScalar();

    command.CommandText = "PRAGMA rekey = ''";
    command.Parameters.Clear();
    command.ExecuteNonQuery();
}

有没有类似 DB Browser for SQLite 之类的工具可以查看加密的 Sqlite 数据库(使用 .NET Core 3.1 加密)?

【问题讨论】:

  • 解决方法可能是转储数据库。

标签: sqlite .net-core


【解决方案1】:

由于该示例使用 SQLite Cipher,因此 SQLite 的 DB Browser 可以按照 重要说明 将其打开(如果它使用 SQLite Cipher 4.0.1(不确定这是否向后兼容)) Version 3.11.0 released.

当然,这需要密码/密钥。简而言之,如果加密并且没有密码/密钥,数据库将毫无用处,因为没有任何东西能够解密数据(假设安全级别是不可破解的)。因此,为什么无法删除密码。

至于在打开数据库时进行的解密(我相信文件作为一个整体被加密和解密作为关闭/打开数据库的一部分)。因此,您可以在打开数据库时复制已解密的数据库。

VACUUM INTO 将是在打开数据库后完成此副本的简单方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 2011-11-10
    相关资源
    最近更新 更多