Как защитить паролем SQLite3.
Перед выполнением каких-либо операций установите пароль следующим образом:
SQLiteConnection conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
conn.SetPassword("password");
conn.open();
Подключение к базе с паролем осуществляется следующим образом:
conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=password;");
conn.Open();
Установленный пароль не позволит графическому редактору просматривать ваши данные.
Некоторые редакторы могут расшифровать БД, если вы укажете пароль. Используемый алгоритм RSA.
Если вам нужно изменить пароль, используйте:
conn.ChangePassword("new_password");
Для того, чтобы очистить (reset), или удалить пароль, используйте:
conn.ChangePassword(String.Empty);
Также Вы можете использовать встроенное шифрование поставщика sqlite.net(System.Data.SQLite).
Подробнее см. sqlite.phxsoftware.com
Чтобы зашифровать существующую незашифрованную базу данных или, чтобы изменить пароль зашифрованной базы данных, откройте базу данных и затем используйте функцию ChangePassword() в SQLiteConnection:
{reklama}
// Opens an unencrypted database
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.Open();
// Encrypts the database. The connection remains valid and usable afterwards.
cnn.ChangePassword("mypassword");
Чтобы расшифровать существующую зашифрованную базу данных, вызов ChangePassword() с паролем NULL или "":
// Opens an encrypted database
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3;Password=mypassword");
cnn.Open();
// Removes the encryption on an encrypted database.
cnn.ChangePassword(null);
Чтобы открыть существующую зашифрованную базу данных или создать новую зашифрованную базу данных, укажите пароль в ConnectionString, как показано в предыдущем примере, либо вызовите функцию SetPassword() прежде, чем открывать новое соединение SQLiteConnection.
Пароль, указанный в ConnectionString, должен быть пустым (cleartext), но пароли, предоставляемые в функции SetPassword(), могут быть двоичными байтовыми массивами.
// Opens an encrypted database by calling SetPassword()
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.SetPassword(new byte[] { 0xFF, 0xEE, 0xDD, 0x10, 0x20, 0x30 });
cnn.Open();
// The connection is now usable
По умолчанию ключевое слово ATTACH будет использовать тот же ключ шифрования, что и основная база данных при присоединении другого файла базы данных к существующему соединению. Чтобы изменить это поведение, вы используете модификатор KEY следующим образом:
Если вы прикрепляете зашифрованную базу данных с помощью пароля открытого текста:
// Attach to a database using a different key than the main database
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();
Чтобы подключить зашифрованную базу данных с помощью двоичного пароля:
// Attach to a database encrypted with a binary key
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();
Используйте SQLCipher, это расширение для SQLite, которое обеспечивает прозрачное 256-битное шифрование AES файлов базы данных. sqlcipher.net