2012-08-30 14 views
15

Używam bazy danych SQLite w wersji 3 z aplikacją C# Windows. Chcę zaszyfrować plik bazy danych SQLite za pomocą hasła lub dowolnego innego sposobu szyfrowania, aby uniemożliwić klientom otwarcie go z folderu plików programu.Czy mogę zaszyfrować hasło bazy danych SQLite?

nie chcę żadnych sposobów szyfrowania Runtime, po prostu chcę, aby w polu Pokaż hasło pliku bazy danych, gdy klient próbuje otworzyć go z plików programu .. Dzięki

Edycja

i czy zaszyfrowałem go z kodu, klient może go otworzyć, gdy kompletny pakiet instalacyjny i plik db zostały przeniesione do plików programu przed otwarciem programu w celu przeprowadzenia szyfrowania, prawda?

+0

możliwy duplikat: http://stackoverflow.com/questions/1381264/password-protect-a-sqlite-db-is-it-possible –

+1

Uważam, że Hassan szuka szyfrowania innego niż runtime. –

Odpowiedz

22

używam SQLite w wersji 3 działa idealnie! Trzeba to zrobić:

//if the database has already password 
try{ 
      string conn = @"Data Source=database.s3db;Password=Mypass;"; 
      SQLiteConnection connection= new SQLiteConnection(conn); 
      connection.Open(); 
      //Some code 
      connection.ChangePassword("Mypass"); 
      connection.Close(); 
    } 
//if it is the first time sets the password in the database 
catch 
    { 
      string conn = @"Data Source=database.s3db;"; 
      SQLiteConnection connection= new SQLiteConnection(conn); 
      connection.Open(); 
      //Some code 
      connection.ChangePassword("Mypass"); 
      connection.Close(); 
    } 

potem, gdy użytkownik próbuje otworzyć bazę danych. powie "chronione przez administratora" lub baza danych jest zaszyfrowana lub nie jest bazą danych lub uszkodzonym plikiem!

+0

jeśli zastosuję ten kod w niektórych bazach danych sqlite i otrzymam encypcję, co jeśli chcę ręcznie edytować tabelę w bazie danych, to znaczy czy istnieje sposób jej odszyfrowania? jaki kod muszę do tego napisać? – Mogli

+0

Myślę, że nie ma innego sposobu po prostu kod. co możesz zrobić, to zrobić samodzielną aplikację z tym kodem stawiającym hasło puste i prosi stare hasło, aby uzyskać dostęp do tego –

+0

użyłem tego con.Open(); con.ChangePassword ("Mypass"); con.Close(); teraz jest zaszyfrowany, chcę go ręcznie zmienić i chcę go otworzyć, co powinienem zrobić? – Mogli

1

Niestety, hasło w pliku SQlite można dodawać, usuwać lub zmieniać tylko z kodu. Do tego potrzebna jest przestrzeń nazw System.Data.SQLite, która zapewni metody, a także adaptery i połączenia do tego celu.

+0

dziękuję za zainteresowanie, ale jeśli zrobiłem to z kodu, klient może go otworzyć po zakończeniu instalacji, a plik _db_ przeniesiony do plików programu nie jest? – Hassanation

+0

jako kod szyfrowania nie będą stosowane, dopóki program nie uruchomi się – Hassanation

2

Znaleziono w tej forum posterunek wskazujący ..

Standard SQLite3 API doesn't offer any form of protection and relies only on underlying OS privileges mecanism (if any) for "security". If you have an existing SQLite-style database which uses a specific API to gain access, then you should use this particular (non-standard) API.

Jeśli możesz/chcesz użyć jakiegoś rozszerzenia SQLite można także spróbować SQLite Encryption Extension (SEE) lub SQLite Crypt

ale można zmienić/ustawić hasło do bazy danych przy użyciu SQLite.Data, jak pokazano w this article.

+0

, jeśli użyłem jakiegoś rozszerzenia, czy połączenie działa tak dobrze, jak z tym samym rozszerzeniem? – Hassanation

+0

masz na myśli, jeśli używasz jakiegoś rozszerzenia do szyfrowania, jeśli nadal możliwe jest utworzenie i otwarcie połączenia z tym db z C#? –

+0

tak dokładnie, co miałem na myśli :) – Hassanation

0

Wypróbuj sqlitestudio.pl jako redaktor.
Dla typu bazy danych wybierz System.Data.SQLite podczas łączenia.

Powiązane problemy