SQLite连接字符串具有加密的密码

时间:2020-06-28 00:16:40

标签: .net vb.net sqlite sqlcipher

我有一个使用“ SQLite Cipher” 的加密数据库。当我尝试使用连接字符串连接到数据库时,出现以下错误消息:

“ SQL逻辑错误,无法使用“密码”连接字符串属性:库不是使用加密支持构建的。”

Code With Error

Imports System.Data.SQLite
Public Class frm_projects
    Dim dtset As New SQLiteConnection("Data Source=Setting.db;Password=m;")

    Private Sub frm_projects_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            If dtset.State = ConnectionState.Closed Then
                dtset.Open()

            End If
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Information, "Warning")
        End Try
    End Sub
End Class

Image From DB Browser sqlite Cipher

2 个答案:

答案 0 :(得分:2)

问题来源

我认为此错误的实际原因是自 System.Data.SQLite 版本 ~1.0.113.1 以来缺乏对“legacy CryptoAPI”的支持。

它是在以下提交中完成的: https://system.data.sqlite.org/index.html/info/1dd56c9fd59a10fd

我们能做什么?

  1. 手动使用支持 CryptoAPI 的最新 NuGet 版本 - 1.0.112.2

    注意 - 它必须手动完成 - 通过编辑 PackageReference 中的 csproj 或编辑 config.packages。 原因是旧版本未列出 (!) 来自 the NuGet feedNuGet feed only shows ONE version

  2. 购买 SQLite Encryption Extension (SEE) 的永久源代码许可证,一次性费用为 2000 美元(截至 2021 年 2 月)- purchase link

  3. 使用 SQLCipher - SQLCipher 是一个 SQLite 扩展,它提供 256 位 AES 数据库文件加密 - GitHub source(我自己没有测试过!)

数据来源

答案 1 :(得分:0)

通过此软件包Link更改System.data.sqlite

要为不受保护的数据库设置密码,请执行以下操作:

Dim conn = New SQLite.SQLiteConnection(
    "Data Source=C:\yourFolder\yourDB.db3;Version=3;")
conn.Open()
conn.ChangePassword("password")
conn.Close()

要打开受密码保护的数据库,请执行以下操作:

Dim conn = New SQLite.SQLiteConnection(
    "Data Source=C:\yourFolder\yourDB.db3;Version=3;")
conn.SetPassword("password")
conn.Open()
conn.Close()

Dim conn = New SQLite.SQLiteConnection(
    "Data Source=C:\yourFolder\yourDB.db3;Version=3;Password=password;")
conn.Open()
conn.Close()

要从受密码保护的数据库中删除密码,请执行以下操作:

Dim conn = New SQLite.SQLiteConnection(
    "Data Source=C:\yourFolder\yourDB.db3;Version=3;Password=password;")
conn.Open()
conn.ChangePassword(String.Empty)
conn.Close()

注意:只要您选择System.Data.SQLite而不是Sqlite 3作为数据库类型,开放源数据库管理器SQLiteStudio便可以打开采用这种方式受密码保护的文件。 (需要v 3.1.1,当前版本)。