sqlite .netプロバイダー(System.Data.SQLite)の組み込み暗号化を使用できます。詳細については、http://web.archive.org/web/20070813071554/http://sqlite.phxsoftware.com/forums/t/130.aspxをご覧ください。
既存の暗号化されていないデータベースを暗号化する、または暗号化されたデータベースのパスワードを変更するには、データベースを開いてから、SQLiteConnectionのChangePassword()関数を使用します。
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.Open();
cnn.ChangePassword("mypassword");
またはパスワードを使用して既存の暗号化されたデータベース呼び出しを復号化するには:ChangePassword()
NULL
""
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3;Password=mypassword");
cnn.Open();
cnn.ChangePassword(null);
既存の暗号化データベースを開く、または新しい暗号化データベースを作成するにConnectionString
は、前の例に示すようにでパスワードを指定するかSetPassword()
、新しいを開く前に関数を呼び出しますSQLiteConnection
。で指定されたパスワードはConnectionString
クリアテキストである必要がありますが、SetPassword()
関数で提供されるパスワードはバイナリバイト配列である可能性があります。
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.SetPassword(new byte[] { 0xFF, 0xEE, 0xDD, 0x10, 0x20, 0x30 });
cnn.Open();
デフォルトでは、ATTACHキーワードは、別のデータベースファイルを既存の接続に接続するときに、メインデータベースと同じ暗号化キーを使用します。この動作を変更するには、次のようにKEY修飾子を使用します。
クリアテキストパスワードを使用して暗号化されたデータベースを接続する場合:
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.Open();
cmd = new SQLiteCommand("ATTACH DATABASE 'c:\\pwd.db3' AS [Protected] KEY 'mypassword'", cnn);
cmd.ExecuteNonQuery();
バイナリパスワードを使用して暗号化されたデータベースを接続するには:
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.Open();
cmd = new SQLiteCommand("ATTACH DATABASE 'c:\\pwd.db3' AS [Protected] KEY X'FFEEDD102030'", cnn);
cmd.ExecuteNonQuery();