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暗号化拡張機能(SEE)またはSQLiteCryptを試すこともできます。

ただし、この記事に示すように、SQLite.Dataを使用してデータベースのパスワードを変更/設定できます。

于 2012-08-30T06:05:27.040 に答える
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 に答える