gpt4 book ai didi

c# - SQLiteConnection 类中的 "SetPassword"或 "ChangePassword"在哪里?

转载 作者:行者123 更新时间:2023-12-03 22:43:57 33 4
gpt4 key购买 nike

我只是在学习如何加密/解密 SQLite 数据库。
我找到了一种加密方法,如这篇文章 SQLite with encryption/password protection

此页面的最佳答案说我们可以使用 SEE , wxSQLite , SQLCipher , SQLiteCrypt等...加密。

我能够了解。

而且,另一个答案说我们可以使用:

SQLiteConnection conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
conn.SetPassword("password");
conn.open();

这个页面也有同样的说法:
Password Protect a SQLite DB. Is it possible?

然而, SQLiteConnection没有 SetPassword也不是 ChangePassword方法。
我很困惑。

在哪里 SetPaswordChangePassword ?
这些在 SEE 中吗? , wxSQLite , SQLCipher , SQLiteCrypt ?

[Development environment]
VisualStudio2010 .NET Framework 4 Client Profile System.Data.SQLite.dll (https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki)



我从那里下载了 zip,然后我拿起了“System.Data.SQLite.dll”

最佳答案

如果你想加密/解密 SQLite 数据库。有一些信息给你
请查看 Specify the key section如果您有其他问题,请在官方文档中。

The method for encrypting and decrypting existing databases varies depending on which solution you're using. For example, you need to use the sqlcipher_export() function on SQLCipher. Check your solution's documentation for details.


您可以使用 SQLCipher API 来完成您的工作:
  • 如果你想建立一个加密数据库,
    只需设置您的连接字符串,如下所示:Data Source = encryptedName.db; Password=YourPassword
  • 如果您想更改加密数据库中的密码
    // you can use this in startup.cs
    using var changePasswordDb = new DBContext(
    new SqliteConnection(
    new SqliteConnectionStringBuilder()
    {
    DataSource = "encryptedName.db",
    Mode = SqliteOpenMode.ReadWriteCreate,
    Password = oldPassword
    }.ToString()
    ));
    changePasswordDb.Database.ExecuteSqlRaw($"PRAGMA rekey = {newPassword}");

    // or use SqliteConnection
    var connection = new SqliteConnection("Data Source =encryptedName.db.db;Password=yourPassword");
    connection.Open();
    var command = connection.CreateCommand();
    command.CommandText = "PRAGMA rekey = " + newPassword;
    command.ExecuteNonQuery();
  • 如果要加密明文 SQLite 数据库,不直接支持 SQLCipher。所以你可以使用 sqlcipher_export() 来达到目标​​。
    看这个 How to encrypt a plaintext SQLite database to use SQLCipher (and avoid “file is encrypted or is not a database” errors)
  • // Example
    command.CommandText = "ATTACH DATABASE 'encryptedName.db' AS encrypted KEY 'YourNewPassword';SELECT sqlcipher_export('encrypted');DETACH DATABASE encryptedName;";
  • 如果您在 Asp.net Core 和 Entity Framework Core 中遇到一些性能问题,
    你需要检查这些
  • Performance with SQLite and Microsoft.EntityFrameworkCore.Sqlite.Core and SQLitePCLRaw.bundle_e_sqlcipher
  • Entity Framework Core connection management
  • Microsoft.Data.Sqlite: Pool Connections #13837
  • 如果您有其他性能问题,您可以查看此 SQLCipher Performance Optimization
  • 关于c# - SQLiteConnection 类中的 "SetPassword"或 "ChangePassword"在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62294577/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com