最新版本的System.Data.Sqlite不支持密码加密吗?

Joh*_*hnB 3 system.data.sqlite .net-core

我有一个 .Net Core 应用程序,并使用 System.Data.SQLite.dll 包连接到 SQLite DB。

我正在尝试使用密码加密数据库。

在System.Data.SQLite.dll库的1.0.93.0版本中,我可以设置或更改数据库的密码加密:

SQLiteConnection con = new SQLiteConnection($"Data Source=DBName;Version=3;");
conn.SetPassword($"{password}");
conn.ChangePassword($"{password}");
conn.Open();
Run Code Online (Sandbox Code Playgroud)

在最新版本1.0.113.7中,该 api 似乎不再受支持。Visual Studio 在 SetPassword() 和 ChangePassword() 调用上引发编译器错误。

如何使用密码加密我的数据库?是否有另一种方法可以使用此库(或类似的库)来实现此目的?

sco*_*ter 5

是的,似乎从 System.Data.SQLite 版本 1.0.113.0 开始,通过修改 file并将 的值设置为 false,在此签入中完全删除了对这种加密方式的支持/Targets/SQLite.NET.Settings.targetsInteropCodec

\n

具体来说,该评论说“合并 SQLite 核心库 3.32.0 版本所需的所有更改”。

\n

这向我们揭示了真正的罪魁祸首是 SQLite 本身,在版本 3.32.0 中,他们也删除了对这种类型的加密 API 的支持,这次提交中,评论说“通过删除不受支持和未记录的 SQLITE_HAS_CODEC 来简化代码”编译时选项

\n

System.Data.SQLite 和 SQLite 中的更改都没有记录在这些项目的发行说明中。

\n

在 System.Data.SQLite 的早期版本(例如 1.0.112.1 及更早版本)中,支持通过 SetPassword() 方法进行加密,这使用 \xe2\x80\x9cSQLite 加密扩展\xe2\x80\x9d (SEE)

\n