我可以用密码加密SQLite数据库吗?

时间:2012-08-30 05:56:06

标签: c# sql database sqlite

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

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

修改

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

5 个答案:

答案 0 :(得分: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();
    }
  

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

答案 1 :(得分:3)

在此forum帖子中找到了表明......

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 更改/设置数据库的密码,如this article所示。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

http://sqlite.phxsoftware.com/forums/t/130.aspx enter link description here

或使用:

SQLiteCrypt API