Możesz użyć wbudowanego szyfrowania dostawcy sqlite .net (System.Data.SQLite). Zobacz więcej szczegółów na http://web.archive.org/web/20070813071554/http://sqlite.phxsoftware.com/forums/t/130.aspx
Aby zaszyfrować istniejącą niezaszyfrowaną bazę danych lub zmienić hasło do zaszyfrowanej bazy danych , otwórz bazę danych, a następnie użyj funkcji ChangePassword () w SQLiteConnection:
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.Open();
cnn.ChangePassword("mypassword");
Aby odszyfrować zaszyfrowane istniejącej bazy danych połączenia ChangePassword()
z NULL
lub ""
hasło:
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3;Password=mypassword");
cnn.Open();
cnn.ChangePassword(null);
Aby otworzyć istniejącą zaszyfrowaną bazę danych lub utworzyć nową zaszyfrowaną bazę danych, określ hasło w ConnectionString
sposób pokazany w poprzednim przykładzie lub wywołaj SetPassword()
funkcję przed otwarciem nowej SQLiteConnection
. Hasła określone w ConnectionString
muszą być zwykłym tekstem, ale hasła podane w SetPassword()
funkcji mogą być binarnymi tablicami bajtowymi.
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.SetPassword(new byte[] { 0xFF, 0xEE, 0xDD, 0x10, 0x20, 0x30 });
cnn.Open();
Domyślnie słowo kluczowe ATTACH będzie używać tego samego klucza szyfrowania co główna baza danych podczas dołączania innego pliku bazy danych do istniejącego połączenia. Aby zmienić to zachowanie, użyj modyfikatora KEY w następujący sposób:
Jeśli dołączasz zaszyfrowaną bazę danych przy użyciu hasła w postaci zwykłego tekstu:
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();
Aby dołączyć zaszyfrowaną bazę danych przy użyciu hasła binarnego:
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();