17

我正在使用带有 C# Windows 应用程序的 SQLite 数据库版本 3。我想使用密码或任何其他加密方式加密 SQLite 数据库文件,以防止客户端从程序文件文件夹中打开它。

我不想要任何运行时加密方式,我只想让数据库文件在客户端尝试从程序文件中打开它时显示密码字段..谢谢

编辑

如果我从代码中加密它,客户端可以在安装完成后打开它,并且在打开程序执行加密之前将db文件传输到程序文件不是吗?

4

5 回答 5

24

我使用 SQLite 版本 3 完美运行!你必须这样做:

//if the database has already password
try{
            string conn = @"Data Source=database.s3db;Password=Mypass;";
            SQLiteConnection connection= new SQLiteConnection(conn);
            connection.Open();
            //Some code
            connection.ChangePassword("Mypass");
            connection.Close();
    }
//if it is the first time sets the password in the database
catch
    {
            string conn = @"Data Source=database.s3db;";
            SQLiteConnection connection= new SQLiteConnection(conn);
            connection.Open();
            //Some code
            connection.ChangePassword("Mypass");
            connection.Close();
    }

此后,如果用户尝试打开数据库。会说受管理员保护或数据库已加密或不是数据库或损坏的文件!

于 2013-07-25T10:35:31.737 回答
3

在这个论坛中发现一个帖子表明..

Standard SQLite3 API doesn't offer any form of protection and relies only on underlying OS privileges mecanism (if any) for "security". If you have an existing SQLite-style database which uses a specific API to gain access, then you should use this particular (non-standard) API.

如果您可以/想要为 SQLite 使用某种扩展,您也可以尝试SQLite Encryption Extension (SEE)SQLite Crypt

但是您可以使用 SQLite.Data更改/设置数据库的密码,如本文所示。

于 2012-08-30T06:05:27.040 回答
3

尝试sqlitestudio.pl作为编辑。
对于数据库类型,System.Data.SQLite在连接时选择。

于 2018-02-20T08:48:30.827 回答
1

不幸的是,只能从代码中添加、删除或更改 SQlite 文件中的密码。为此,您需要System.Data.SQLite命名空间,它将为您提供方法以及适配器和连接的东西。

于 2012-08-30T05:57:59.473 回答
0

sq-lite您可以使用.net 提供程序 (System.Data.SQLite)的内置加密。试试这个:

http://sqlite.phxsoftware.com/forums/t/130.aspx在此处输入链接描述

或使用:

SQLiteCrypt API

于 2012-08-30T06:08:05.917 回答