Sqlite .net sağlayıcısının (System.Data.SQLite) yerleşik şifrelemesini kullanabilirsiniz. Http://web.archive.org/web/20070813071554/http://sqlite.phxsoftware.com/forums/t/130.aspx adresinde daha fazla ayrıntıya bakın.
İçin varolan şifresiz veritabanını şifrelemek veya şifreli bir veritabanının şifresini değiştirmek için , veritabanını açın ve ardından SQLiteConnection ait ChangePassword () işlevini kullanın:
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.Open();
cnn.ChangePassword("mypassword");
İçin mevcut bir şifreli veritabanı şifresini çağrıyı ChangePassword()
bir ile NULL
veya ""
şifre:
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3;Password=mypassword");
cnn.Open();
cnn.ChangePassword(null);
Mevcut bir şifrelenmiş veri tabanını açmak veya yeni bir şifreli veri tabanı oluşturmak için ConnectionString
, önceki örnekte gösterildiği gibi içinde bir şifre belirtin veya yenisini SetPassword()
açmadan önce işlevi çağırın SQLiteConnection
. ConnectionString
İçinde belirtilen parolalar düz metin olmalıdır, ancak SetPassword()
işlevde sağlanan parolalar ikili bayt dizileri olabilir.
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");
cnn.SetPassword(new byte[] { 0xFF, 0xEE, 0xDD, 0x10, 0x20, 0x30 });
cnn.Open();
Varsayılan olarak, ATTACH anahtar sözcüğü, başka bir veritabanı dosyasını mevcut bir bağlantıya eklerken ana veritabanıyla aynı şifreleme anahtarını kullanacaktır. Bu davranışı değiştirmek için KEY değiştiricisini aşağıdaki gibi kullanırsınız:
Açık metin parolası kullanarak şifrelenmiş bir veritabanı ekliyorsanız:
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();
İkili parola kullanarak şifrelenmiş bir veritabanı eklemek için:
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();