Главная / C# статьи > Защита паролем SqLite DB

Защита паролем SqLite DB

Как защитить паролем 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
16-09-2018, 01:28. Разместил: administrator
Вернуться назад