【问题标题】:SQLCipher - Decrypt database programmaticallySQLCipher - 以编程方式解密数据库
【发布时间】:2020-10-27 10:48:48
【问题描述】:

我正在使用 .NET Core 项目来管理加密的 SQLite 数据库,我可以在不加密的情况下以编程方式创建数据库副本,但我没有找到任何示例代码,我什至不知道是否这是可能的。

我从以下项目开始: https://github.com/paragpkulkarni/SQLiteEncryptionUsingEFCore

【问题讨论】:

  • 是否需要通用来处理具有任何方案的任何数据库,还是只针对特定方案?
  • 仅适用于我的数据库(特定方案)。
  • 更容易将所有表加载到内存中,然后将它们写入您拥有的未加密的新数据库。
  • 有样品吗?我正在寻找应该实现我的目的的 sqlcipher_export() 函数,但我无法使用 ado.net 等找到一些示例..
  • 那会跑题了吧?

标签: c# sqlite .net-core sqlite-cipher


【解决方案1】:

这是最终的解决方案:

void DecryptDB(string sourceFilename, string destinationFilename, string password)
        {
            var connectionString = new SqliteConnectionStringBuilder
            {
                DataSource = sourceFilename,
                Mode = SqliteOpenMode.ReadWriteCreate,
                Password = password 
            };

            using var cn = new SqliteConnection(connectionString.ToString());
            cn.Open();

            using var c = cn.CreateCommand();
            c.CommandText = @$"ATTACH DATABASE '{destinationFilename}' AS plaintext KEY '';";
            var r = c.ExecuteNonQuery();

            c.CommandText = @"SELECT sqlcipher_export('plaintext')";
            r = c.ExecuteNonQuery();
        }

【讨论】:

    猜你喜欢
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2014-11-14
    相关资源
    最近更新 更多